Hello there! I’m Ace, I’m offering my services as a scripter, builder and translator. I have been coding for 5 years, building for 1 year and live in the Netherlands so I can translate to Dutch too.
I own a game development group on Roblox called Acing Development, currently I’m working on Infinite Obby. Until that game is released I won’t be up for hire
Only my newer models and scripts will be showcased here, my older models can be viewed here.
Rubik's cube
By clicking on the sides, you can rotate them.
local parts, partsCoordsOriginal
function getNewPartName(part)
local name = partsCoordsOriginal[part.Position]
if name ~= nil then
return name
end
local lastDist = 1000000
local correctData
for i, _ in pairs(partsCoordsOriginal) do
local dist = (i - part.Position).Magnitude
if dist < lastDist then
lastDist = dist
correctData = {i, partsCoordsOriginal[i]}
end
end
if correctData ~= nil then
part.Position = correctData[1]
return correctData[2]
end
warn("Couldn't find name of part, original name: " .. part.Name)
return nil
end
function filter(id, value, skip)
if id < 1 or id > 3 then
error("Invalid filter ID in Rubik's cube's script.")
end
if skip == nil then
skip = {Name = ""}
end
local result = {}
for _, part in pairs(parts) do
if part[id + 1] == value then
if part[1].Name ~= skip.Name then
table.insert(result, part[1])
end
end
end
return result
end
function finalizeResetting()
partsCoordsOriginal = {}
parts = {}
for _, part in pairs(script.Parent.Parts:GetChildren()) do
partsCoordsOriginal[part.Position] = part.Name
local coords = string.split(part.Name, ",")
table.insert(parts, {
part,
tonumber(coords[1]),
tonumber(coords[2]),
tonumber(coords[3])
})
end
end
function renameCubeParts(affectedParts)
for _, part in pairs(affectedParts) do
part.Name = getNewPartName(part)
end
finalizeResetting()
end
function executeTrigger_CORE(selectedParts, skip, move)
local model = Instance.new("Model", script.Parent)
for _, obj in pairs(selectedParts) do
obj.Parent = model
end
model.PrimaryPart = model[skip]
for i = 1, 6 do
model:SetPrimaryPartCFrame(model:GetPrimaryPartCFrame() * move)
wait()
end
for _, obj in pairs(model:GetChildren()) do
obj.Parent = script.Parent.Parts
end
renameCubeParts(selectedParts)
end
local debounce = false
function executeTrigger(t)
if debounce == false then
debounce = true
if t == "L" then
executeTrigger_CORE(filter(3, 0), "1,1,0", CFrame.Angles(0, 0, math.rad(15)))
elseif t == "R" then
executeTrigger_CORE(filter(3, 2), "1,1,2", CFrame.Angles(0, 0, math.rad(-15)))
elseif t == "B" then
executeTrigger_CORE(filter(1, 2), "2,1,1", CFrame.Angles(math.rad(-15), 0, 0))
elseif t == "F" then
executeTrigger_CORE(filter(1, 0), "0,1,1", CFrame.Angles(math.rad(15), 0, 0))
elseif t == "U" then
executeTrigger_CORE(filter(2, 2), "1,2,1", CFrame.Angles(0, 0, math.rad(15)))
elseif t == "D" then
executeTrigger_CORE(filter(2, 0), "1,0,1", CFrame.Angles(0, 0, math.rad(15)))
end
debounce = false
end
end
for _, trigger in pairs(script.Parent.Triggers:GetChildren()) do
trigger.ClickDetector.MouseClick:Connect(function()
executeTrigger(trigger.Name)
end)
end
finalizeResetting()
Computer desk
This is, as you can see, a computer desk. It is scripted to have RGB lighting.
local saturation = .625
local brightness = .75
local speed = 1 / 5
local RGBParts = {}
for _, v in pairs(script.Parent:GetDescendants()) do
if v.Name == "RGBPart" then
table.insert(RGBParts, v)
end
end
local hue = 0
local color
game:GetService("RunService").Heartbeat:Connect(function(dt)
hue = (hue + speed * dt) % 1
color = Color3.fromHSV(hue, saturation, brightness)
for _, v in pairs(RGBParts) do
v.Color = color
end
end)
Friend counter
function reset(plr, change, inc)
local vars = plr:FindFirstChild("vars")
local nonpremiumCount = vars:WaitForChild("nonpremiumCount")
local nonpremiumFriend = vars:WaitForChild("nonpremiumFriend")
local premiumCount = vars:WaitForChild("premiumCount")
local premiumFriend = vars:WaitForChild("premiumFriend")
if plr:IsFriendsWith(change.UserId) then
if change.MembershipType == Enum.MembershipType.Premium then
premiumCount.Value += inc
else
nonpremiumCount.Value += inc
end
nonpremiumFriend.Value = nonpremiumCount.Value > 0
premiumFriend.Value = premiumCount.Value > 0
end
end
function resetForAll(change, join)
local inc
if join then
inc = 1
else
inc = -1
end
for _, plr in pairs(game.Players:GetPlayers()) do
reset(plr, change, inc)
end
end
game.Players.PlayerAdded:Connect(function(plr)
resetForAll(plr, true)
end)
game.Players.PlayerRemoving:Connect(function(plr)
resetForAll(plr, false)
end)
This script counts how many premium and how many non-premium friends are in the same server. nonpremiumCount
and premiumCount
are IntValues, while nonpremiumFriend
and premiumFriend
are BoolValues.
I am available for six hours of work on the weekends but I can’t work during the week due to school. You can contact me any time though.
I am currently not for hire due to personal projects.
I can only accept group payouts. For commissions I only accept payment per asset. Please make an offer first and we’ll work from there.