Commissions closed //AceKiron

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

image
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.


1 Like