[OPEN] PandaLikesCaps | Scripter/Web Developer

About Me

Greetings! I am Panda and I specialize in programming. I’ve been programming with Python for over a year and Lua for 5 months. I am a developer that likes to learn and improve. If you notice any differences between some code examples then it might be because I improve!

Showcase

Code Examples
Inventory System
--Inventory Data Store
local InventoryDataStore = {}

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local dataStoreService = game:GetService("DataStoreService")

local playerData = dataStoreService:GetDataStore("PlayerData")

local sessionData = {}

local toolsFolder = game.ReplicatedStorage:WaitForChild("Tools")

local function setUpPlayerTools(player)
 local playerUserId = player.UserId
 sessionData[playerUserId] = {Inventory = {""}}
 local data
 local success, err = pcall(function()
 	data = playerData:GetAsync(playerUserId)
 end)
 
 if success and data then
 	sessionData[playerUserId] = data
 	print(sessionData[playerUserId])
 end
 
 print("loading tools")
 InventoryDataStore.loadTools(player)
 player.CharacterAdded:Connect(function()
 	InventoryDataStore.loadTools(player)
 end)
 
end

function InventoryDataStore.saveData(player)
 local playerUserId = player.UserId
 
 local backpack = player:WaitForChild("Backpack")
 
 local children = backpack:GetChildren()
 
 for index, value in pairs(children) do
 	local playerSessionData = sessionData[playerUserId]
 	if not table.find(playerSessionData.Inventory, value.Name) then
 		table.insert(playerSessionData.Inventory, value.Name)
 	end
 end
 
 print(sessionData[playerUserId])
 
 local success = pcall(function()
 	playerData:SetAsync(playerUserId, sessionData[playerUserId])
 end)
end

InventoryDataStore.createTools = function(player, name)
 local playerUserId = player.UserId
 
 wait(10)
 local tool = toolsFolder:WaitForChild(name)
 local newTool = tool:Clone()
 newTool.Parent = player.Backpack
 	
 local playerSessionData = sessionData[playerUserId]
 	
 if not table.find(playerSessionData.Inventory, name) then
 	print('adding to table')
 	table.insert(playerSessionData.Inventory, name)
 end
 
end

InventoryDataStore.loadTools = function(player)
 local playerUserId = player.UserId
 
 
 if sessionData[playerUserId].Inventory == nil then
 	print("Inventory nil!")
 	wait(3)
 else
 	if #sessionData[playerUserId].Inventory == 0 then
 		print("nothing in inventory!")
 	else
 		for i, toolName in pairs(sessionData[playerUserId].Inventory) do
 			InventoryDataStore.createTools(player, toolName)
 			print("Created tool!")
 		end
 	end
 end
 
end

Players.PlayerAdded:Connect(function(player)
 setUpPlayerTools(player)
end)
Players.PlayerRemoving:Connect(function(player)
 InventoryDataStore.saveData(player)
end)


return InventoryDataStore

Hotbar system

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local InventoryTemplate = ReplicatedStorage:WaitForChild("Values")
local InventoryGuiTemplate = game.StarterGui.InventoryGUI.Template
local Players = game:GetService("Players")
local InventoryDataStore = game.ServerStorage:WaitForChild("InventoryDataStore")


local function setUpInventory(player)
	local Inventory = player:WaitForChild("Backpack")
	local PlayerGUI = player:WaitForChild("PlayerGui")
	local InventoryGui = PlayerGUI:WaitForChild("InventoryGUI")
	
	local rounds = 0
	
	for i, item in pairs(Inventory:GetChildren()) do
		print("trying")
		rounds = rounds + 1
		local itemGui = InventoryGuiTemplate.item:Clone()
		itemGui.Name = item.Name
		itemGui.TextLabel.Text = rounds
		itemGui.Parent = player.PlayerGui.InventoryGUI.Frame
		itemGui.Visible = true
	end
	
	while rounds < 5 do
		print("trying")
		rounds = rounds + 1
		local itemGui = InventoryGuiTemplate.item:Clone()
		itemGui.Name = "empty" 
		itemGui.TextLabel.Text = rounds
		itemGui.Parent = player.PlayerGui.InventoryGUI.Frame
		itemGui.Visible = true
	end
end

game.Players.PlayerAdded:Connect(function(player)
	setUpInventory(player)
end)

local player = game.Players.LocalPlayer

local character = player.Character or player.CharacterAdded:Wait()



character.ChildAdded:Connect(function(child)
	if (child:IsA('Backpack')) then
		setUpInventory(player)
		InventoryDataStore.loadTools()
	end
end)
NPC Spawning System using Procedural Generation
local ServerStorage = game:GetService("ServerStorage")

local dummyFolder = ServerStorage:WaitForChild("Dummies")

local function GenerateDensity(size, seed, freq)
	
	local densityGeneration = {}
	for x = 1, size do
		local hx = {}
		densityGeneration[x] = hx
		for z = 1, size do
			local y = math.noise((x + seed) / freq, (z + seed) / freq)
			hx[z] = math.clamp(y + 0.5, 0, 1)
		end
	end
	
	return densityGeneration
end

local function spawnDummies()
	local density = GenerateDensity(100, 45, 10)
	
	local dummy = dummyFolder.Dummy
	
	local rng = Random.new(0, 1)
	
	for x = 1, #density do
		local hx = density[x]
		for z = 1, #hx do
			local y = hx[z]
			local thing = rng:NextNumber(0, 1)
			if (thing < y) then
				local newDummy = dummy:Clone()
				newDummy:SetPrimaryPartCFrame(CFrame.new(x + rng:NextNumber(-1, 1), 0.5, z + rng:NextNumber(-1, 1)))
				newDummy.Parent = game.Workspace
				wait(1)
				print("New dummy created")
			end
		end
	end
end

spawnDummies()
Ranking bot
--Web
var groupId = 9532010
var cookie = " "

const express = require("express");
const rbx = require("noblox.js");
const app = express();

app.use(express.static("public"));

async function startApp() {
  await rbx.cookieLogin(cookie);
}

startApp();

app.get('/ranker', (req, res) => {
  rbx.setRank(groupId, parseInt(req.param("userId")), parseInt(req.param("rank")));
  res.json("Ranked user!")
})

const listener = app.listen(process.env.PORT, () => {
  console.log("App is listening at port " + listener.address().port)
})

local URL = ""
local Players = game:GetService("Players")
local MarketplaceService = game:GetService("MarketplaceService")

local fabulous = 3
local dynamic = 4
local lavish = 5

local ClothingList = {}

local function rankUser(userId, roleId)
	game:GetService("HttpService"):GetAsync(URL .. "ranker?user_id=" .. userId .. "&rank=" .. roleId)
end

Players.PlayerAdded:Connect(function(player)
	local ownedStuff = 0
	for i,v in pairs(ClothingList) do
		if MarketplaceService:PlayerOwnsAsset(player, v) then
			ownedStuff = ownedStuff + 1
		end
	end
	
	if ownedStuff < 5 then
		if ownedStuff == 0 then
			print("no clothing")
		else
			rankUser(player.UserId, fabulous)
			print("ranked user")
		end
	elseif ownedStuff >= 5 then
		rankUser(player.UserId, dynamic)
	elseif ownedStuff >= 15 then
		rankUser(player.UserId, lavish)
	end
end)

Tools I’m familiar with

Rojo
Git & Github
roblox-ts(very new)
Trello

Availability

I am available for 3 to 5 hours on weekends. However, I can only work 2 hours on weekdays due to school.

Payment

Prices change to the amount of work that’s needed to be done. I can accept payment per project or hourly pay. If I like the project, I can also accept percentages. I can’t accept full-time projects as I am busy with school.

Contact

You can contact me here on the Developer Forum or via Discord at pandalikescaps#1005

Thanks for reading! :slight_smile: