Types
To ensure compatibility with Roblox DataStore, Roda only supports primitive data types (strings, numbers, booleans).
This section offers some basic examples of converting primitives into complex Roblox types.
Color3
Script
local colors = require(game.ReplicatedStorage.Colors) -- Adjust as needed
local items = require(game.ReplicatedStorage.Items) -- Adjust as needed
for _, item in pairs(items) do
local colorData = colors[item.colorKey] or error("Color not found: " .. item.colorKey)
item.color = Color3.fromRGB(colorData.R, colorData.G, colorData.B)
end
Vector3
Script
local positions = require(game.ReplicatedStorage.Positions) -- Adjust as needed
local items = require(game.ReplicatedStorage.Items) -- Adjust as needed
for _, item in pairs(items) do
local pos = positions[item.posKey] or error("Position not found: " .. item.posKey)
item.position = Vector3.new(pos.X, pos.Y, pos.Z)
end
Vector2
Script
local sizes = require(game.ReplicatedStorage.Sizes) -- Adjust as needed
local items = require(game.ReplicatedStorage.Items) -- Adjust as needed
for _, item in pairs(items) do
local sizeData = sizes[item.sizeKey] or error("Size not found: " .. item.sizeKey)
item.size = Vector2.new(sizeData.X, sizeData.Y)
end
UDim2
Script
local uiSizes = require(game.ReplicatedStorage.UISizes) -- Adjust as needed
local items = require(game.ReplicatedStorage.Items) -- Adjust as needed
for _, item in pairs(items) do
local sizeData = uiSizes[item.sizeKey] or error("UISize not found: " .. item.sizeKey)
item.size = UDim2.new(sizeData.ScaleX, sizeData.OffsetX, sizeData.ScaleY, sizeData.OffsetY)
end
UDim
Script
local uiScales = require(game.ReplicatedStorage.UIScales) -- Adjust as needed
local items = require(game.ReplicatedStorage.Items) -- Adjust as needed
for _, item in pairs(items) do
local scaleData = uiScales[item.scaleKey] or error("UIScale not found: " .. item.scaleKey)
item.size = UDim.new(scaleData.Scale, scaleData.Offset)
end
CFrame
Script
local cFrames = require(game.ReplicatedStorage.CFrames) -- Adjust as needed
local items = require(game.ReplicatedStorage.Items) -- Adjust as needed
for _, item in pairs(items) do
local cFrameData = cFrames[item.cFrameKey] or error("CFrame not found: " .. item.cFrameKey)
item.cFrame = CFrame.new(cFrameData.PositionX, cFrameData.PositionY, cFrameData.PositionZ)
* CFrame.fromEulerAngles(math.rad(cFrameData.RotationX), math.rad(cFrameData.RotationY), math.rad(cFrameData.RotationZ))
end
ModuleScript
local cFrames = {
["objectPosition1"] = {
cFrameKey = "objectPosition1",
PositionX = 0,
PositionY = 5,
PositionZ = 0,
RotationX = 45, -- In degrees
RotationY = 0,
RotationZ = 0,
},
["objectPosition2"] = {
cFrameKey = "objectPosition2",
PositionX = 10,
PositionY = 8,
PositionZ = 5,
RotationX = 0,
RotationY = 0,
RotationZ = 90, -- In degrees
},
}
return cFrames