[OPEN] bootsareme's Portfolio | Lua Programmer & Game Developer

NOTICE: The collaboration category will be removed on December 31st, 2021. Please see my updated portfolio @: https://talent.roblox.com/creators/609345911, this thread will be carbon copied to https://devforum.roblox.com/t/bootsaremes-portfolio-lua-programmer-game-developer/1533079.

Qualifications

Greetings to everyone! My name is bootsareme and I have been programming for 6+ years now. I can script the following:

  • fighting systems
  • round-based games
  • in-game shops
  • admin consoles
  • custom chats
  • pathfinding NPCs
  • Backend APIs/HTTP requests
  • Datastores
  • procedual terrain generation
  • linking a Roblox game to a Discord integration bot
  • managing game analytics with a SQL server
  • creating custom admin commands
  • using a HTTP proxy to check a player’s membership status from an external website.

Besides these topics, I also have a proficient understanding of the Roblox API and the lifecycle/deployment of Roblox games.

Other Ventures

Besides Lua and the Roblox API, I am also fluent in these following languages/tools:

  • C (Win32 API)
  • C++ (Qt GUI, STL)
  • C# (.NET)
  • Java (AWT, Swing)
  • Python (Many libraries)
  • Git Products (Github, Gitlab)
  • Linux System Admininistration
  • Algorithms and Data Structures

I have also created several GUI applications using C++ Qt Framework in conjunction with the C Win32 API, a C# UWP applet that uses OpenCV (Python) for image identification, and a geolocation tool in Java. I currently own a cloud server in which I administer websites through Linux shells. More projects by me can be found here: bootsareme · GitHub.

Showcase

You can view my latest game here: Immune System Fighting Simulator - Roblox
Demostration of Procedual Terrain Generation by me: Procedural Terrain Generation Demo - Roblox

Here are some of my works


--xbox controller vibration script
--Roblox Services
local HapticService = game:GetService("HapticService")
local UserInputService = game:GetService("UserInputService")

--local player
local player = game:GetService("Players").LocalPlayer

--wait to make sure it loads
wait(5)

--checks if vibration is supported
if HapticService:IsVibrationSupported(Enum.UserInputType.Gamepad1) then
	--starts listening for health changed event once player spawns
	player:WaitForChild("leaderstats").Type:GetPropertyChangedSignal("Value"):Connect(function()
		local initHealth = player.Character.Humanoid.Health
		--detect if health changes
		workspace[player.Name].Humanoid:GetPropertyChangedSignal("Health"):Connect(function()
			local finalHealth = player.Character.Humanoid.Health
			local vibrateAmount = (initHealth - finalHealth) / 100
			--vibrates only if touched
			player.Character.Killpart.Touched:Connect(function(hit)
				if hit.Parent:FindFirstChild("Humanoid") then
					HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.Large, vibrateAmount)
					wait(0.5)
				end
				HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.Large, 0)
			end)
		end)
		
		--if humanoid is dead, stop vibrating
		workspace[player.Name].Humanoid.Died:Connect(function()
			HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.Large, 0)
		end)
	end)
end

--press L2 to open sidebar, L1 to close sidebar
UserInputService.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.Gamepad1 then
		if input.KeyCode == Enum.KeyCode.ButtonL1 then
			player.PlayerGui.Sidebar.Frame.closebutton.Visible = true
			player.PlayerGui.Sidebar.Frame:TweenPosition(UDim2.new(-0.146, 0, 0.243, 0))
			wait(1)
			player.PlayerGui.Sidebar.Frame.closebutton.Visible = false
			player.PlayerGui.Sidebar.Frame.clonebutton.Visible = true
		elseif input.KeyCode == Enum.KeyCode.ButtonL2 then
			player.PlayerGui.Sidebar.Frame.clonebutton.Visible = true 
			player.PlayerGui.Sidebar.Frame:TweenPosition(UDim2.new(0, 0, 0.243, 0))
			wait(1)
			player.PlayerGui.Sidebar.Frame.clonebutton.Visible = false
			player.PlayerGui.Sidebar.Frame.closebutton.Visible = true
		end
	end
end)

--if player's friend joins, small vibration for 1/5 second
game.Players.PlayerAdded:Connect(function(friend)
	if player:IsFriendsWith(friend.UserId) then
		HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.Small, 1)
		wait(0.2)
		HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.Small, 0)
	end
end)
--pathfinding AI script
--services
local PathfindingService = game:GetService("PathfindingService")
local Teams = game:GetService("Teams")

--begin module
local PathfindingAI = {}

local function cloneCharacter(player)
	local character = game.Players[player.Name].Character
	character.Archivable = true
	local characterClone = character:Clone()
	character.Archivable = false
	return characterClone
end

function PathfindingAI.InitPathfindingAI(player)
	if game.Players[player.Name].leaderstats.Type.Value == "Virus" or game.Players[player.Name].leaderstats.Type.Value == "Bacteriophage" then
		local path = PathfindingService:CreatePath()
		local clonedCharacter = cloneCharacter(player)
		clonedCharacter.Name = player.Name
		workspace[player.Name].Humanoid.WalkSpeed = 16
		clonedCharacter.Humanoid.Health = 100
		clonedCharacter.Parent = workspace
		clonedCharacter.HumanoidRootPart.CFrame = CFrame.new(player.HumanoidRootPart.CFrame.X - 10, player.HumanoidRootPart.CFrame.Y, player.HumanoidRootPart.CFrame.Z - 10)
		while game.Players[player.Name].Team == Teams.Pathogens or game.Players[player.Name].leaderstats.Type.Value == "Bacteriophage" do
			local rootPos = player.HumanoidRootPart.Position
			local randomPos = Vector3.new(math.random(-302, 280), rootPos.Y, math.random(-285, 266))
			path:ComputeAsync(clonedCharacter.HumanoidRootPart.Position, randomPos)
			local waypoints = path:GetWaypoints()
			for _, waypoint in pairs(waypoints) do
				clonedCharacter.Humanoid:MoveTo(waypoint.Position)
				if waypoints.Action == Enum.PathWaypointAction.Jump then
					clonedCharacter.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
				end
			end
			wait()
		end
		if game.Players[player.Name].Team == Teams.Menu then
			clonedCharacter:Destroy()
		end
	elseif game.Players[player.Name].leaderstats.Type.Value == "Bacteria" then
		local path = PathfindingService:CreatePath()
		local clonedCharacter = cloneCharacter(player)
		clonedCharacter.Name = player.Name
		workspace[player.Name].Humanoid.WalkSpeed = 16
		clonedCharacter.Humanoid.Health = 100
		clonedCharacter.Parent = workspace
		for _, v in pairs(clonedCharacter:GetChildren()) do
			if v.Name == "Humanoid" then
				continue
			else
				v:SetNetworkOwner(nil)
			end
		end
		clonedCharacter.HumanoidRootPart.CFrame = CFrame.new(player.HumanoidRootPart.CFrame.X - 10, player.HumanoidRootPart.CFrame.Y, player.HumanoidRootPart.CFrame.Z - 10)
		while game.Players:WaitForChild(player.Name).Team == Teams.Pathogens do
			local rootPos = player.HumanoidRootPart.Position
			local playerPos = Vector3.new(rootPos.X-10, rootPos.Y, rootPos.Z-10)
			path:ComputeAsync(clonedCharacter.HumanoidRootPart.Position, playerPos)
			local waypoints = path:GetWaypoints()
			for _, waypoint in pairs(waypoints) do
				clonedCharacter.Humanoid:MoveTo(waypoint.Position)
				if waypoints.Action == Enum.PathWaypointAction.Jump then
					clonedCharacter.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
				end
				clonedCharacter.Humanoid.MoveToFinished:Wait()
			end
			wait(1)
		end	
	
		if game.Players[player.Name].Team == Teams.Menu then
			clonedCharacter:Destroy()
		end
	end
end

return PathfindingAI
--gamepasses script
local MarketplaceService = game:GetService("MarketplaceService")
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local GamepassDataStore = DataStoreService:GetDataStore("GamepassDataStore")

local function processReceipt(receiptInfo)
	
	local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
	
	if not player then
		return Enum.ProductPurchaseDecision.NotProcessedYet
	end
	
	if receiptInfo.ProductId == 1027340459 then
		for _, v in pairs(Players:GetPlayers()) do
			v.Character.Humanoid.Health = 0
		end
	elseif receiptInfo.ProductId == 1041266338 then
		game.ReplicatedStorage.AddPlayerPoints:Fire(receiptInfo.PlayerId, 100)
	elseif receiptInfo.ProductId == 1041266453 then
		game.ReplicatedStorage.AddPlayerPoints:Fire(receiptInfo.PlayerId, 1000)
	elseif receiptInfo.ProductId == 1041267057 then
		game.ReplicatedStorage.AddPlayerPoints:Fire(receiptInfo.PlayerId, 10000)
	end
	return Enum.ProductPurchaseDecision.PurchaseGranted

end

MarketplaceService.ProcessReceipt = processReceipt

MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, purchasedPassID, purchaseSuccess)
	if purchaseSuccess == true and purchasedPassID == 10800416 then
		GamepassDataStore:SetAsync(player.UserId, true)
		player.PlayerGui.ShopGUI.Bacteriophage.Buy:Destroy()
		player.PlayerGui.ShopGUI.Bacteriophage.equip.Position = UDim2.new(0.5, 0, 0.9, 0)
	end
end)

game.ReplicatedStorage.PlayerInPlayingState.OnServerEvent:Connect(function(player)
	if GamepassDataStore:GetAsync(player.UserId) == true then
		player.PlayerGui:WaitForChild("ShopGUI").Bacteriophage.Buy.Active = false
		player.PlayerGui:WaitForChild("ShopGUI").Bacteriophage.Buy.Visible = false
		player.PlayerGui:WaitForChild("ShopGUI").Bacteriophage.equip.Position = UDim2.new(0.5, 0, 0.9, 0)
	end
end)

Availability

I am available all day for work on the weekends. During the weekdays, I am only available 4-6 hours due to school. You can contact me anytime during the day, but I may not respond until the afternoon/evening.

Payment

Prices are negotiable, I accept payments either daily/weekly or per scripting task. My preferred payment method is Robux payouts :robux_light:. I prefer short-term scripting tasks rather than long-term developments, although I can negotiate long-term jobs too.

Contact

You can contact me here on the Developer Forum or via Discord. My Discord tag is bootsareme#1155. I prefer you contact me here because I have notifications and I will not accept unknown friend requests on Discord.

2 Likes

Awesome guy he is cheap to hire!

Amazing scripter.
Recommend.

3 Likes

I really liked what he did. Awesome Guy!
Recommend.

3 Likes