So I'm making a game and I'm wondering if it's possible for an exploiter to exploit a module script that contains shop information like prices.
This is the current module script, I have a local script that does require the module but just to read it.
local StoreItems = { Clicks = { [0] = { Name = "Default", Price = 0, Clicks = 1, Image = "http://www.roblox.com/asset/?id=6685581620" }, [1] = { Name = "Test1", Price = 10, Clicks = 2, Image = "http://www.roblox.com/asset/?id=6689477815" }, [2] = { Name = "Test2", Price = 100, Clicks = 4, Image = "http://www.roblox.com/asset/?id=6689478231" }, [3] = { Name = "Test3", Price = 1000, Clicks = 6, Image = "http://www.roblox.com/asset/?id=6689478897" }, [4] = { Name = "Test4", Price = 10000, Clicks = 8, Image = "http://www.roblox.com/asset/?id=6689479543" }, [5] = { Name = "Test5", Price = 100000, Clicks = 10, Image = "http://www.roblox.com/asset/?id=6689481117" }, }, Backpacks = {}, Ranks = {} } return StoreItems
And this is the local script.
--[ Variables ]-- local RS = game:GetService("RunService") local replicatedStorage = game:GetService("ReplicatedStorage") local replicatedData = replicatedStorage:FindFirstChild("replicatedData") local modules = replicatedStorage:FindFirstChild("Modules") local storeData = require(modules:FindFirstChild("StoreData")) local Sample = replicatedStorage:FindFirstChild("Sample") local Clicks = script.Parent.Background.Clicks.ClicksIcon local Backpacks = script.Parent.Background.Backpacks.BackpacksIcon local Ranks = script.Parent.Background.Ranks.RanksIcon local layout = script.Parent.Background.Items.UIPageLayout local player = game.Players.LocalPlayer local Background = script.Parent.Background local Items = Background.Items local Equip = Background.Equip local ItemImage = Background.ItemImage local ItemName = Background.ItemName local ItemStats = Background.ItemStats local ItemStats2 = Background.ItemStats2 local ItemPrice = Background.ItemPrice local abbreviations = { "", "K", "M", "B", "T", "Qa", "Qi", "Sx", "Sp", "Oc", "N", "d", "Ud", "Dd", "Td", "Qad", "Qid", "Sxd", } --[ Functions ]-- local function roundNumber(Amount) local Text = tostring(Amount) local chosenAbbreviation = nil for i = 1, #abbreviations do if tonumber(Amount) < 10^(i*3) then Text = math.floor(Amount/((10^((i-1)*3))/100))/(100).. abbreviations[i] break end end return Text end --[ Main ]-- Clicks.MouseButton1Click:Connect(function() layout:JumpToIndex(0) end) Backpacks.MouseButton1Click:Connect(function() layout:JumpToIndex(1) end) Ranks.MouseButton1Click:Connect(function() layout:JumpToIndex(2) end) --// Put items in gui for i = 1, #storeData.Clicks do local ItemClone = Sample:Clone() ItemClone.Name = i ItemClone.Image = storeData.Clicks[i].Image ItemClone.Parent = Items.Clicks ItemClone.ItemNumber.Value = i end for i,v in pairs(Items.Clicks:GetChildren()) do if v:IsA("ImageButton") then v.MouseButton1Click:Connect(function() local ClickedItem = storeData.Clicks[v.ItemNumber.Value] if Background:FindFirstChild("ItemStats2") then Background.ItemStats2.Visible = false end local Price = ClickedItem["Price"] local Clicks = ClickedItem["Clicks"] ItemImage.Image = ClickedItem["Image"] ItemName.Text = ClickedItem["Name"] ItemStats.Text = "+" ..roundNumber(Clicks).." Clicks" ItemPrice.Text = "$" ..roundNumber(Price).. " Coins" end) end end
If the script executor the exploiter is using has a script decompiler (for example, Krnl and Synapse), then yes, unless the ModuleScript is hidden in places like ServerStorage or ServerScriptService, then they can't.
Yes, exploiters can exploit the module script by requiring it and using what is in the module. They can also see what is in module scripts and local scripts.