// Name: Roblox Studio RP Toolkit Templates // Description: Provides safe Roblox Studio templates for GUI, car spawning, roleplay, teleport, and house customization (no hacks). // Author: suhubig-bit // GitHub: suhubig-bit import "@johnlindquist/kit" await div( md(` # Roblox Development (No Hacks) This script cannot assist with hacks, exploits, or "delta hack" content. However, here are safe, legitimate Roblox Studio starter templates for: - Custom GUI - Car Spawner - Roleplay Tool - Teleport System - House Customization Helpful resources: - Roblox Creator Hub: https://create.roblox.com/ - Scripting Docs: https://create.roblox.com/docs/ - Remote Events: https://create.roblox.com/docs/tutorials/scripting/networking/remote-events `) ) type Example = { name: string description: string code: string } const examples: Example[] = [ { name: "Custom GUI (LocalScript in StarterGui)", description: "Creates a ScreenGui with a TextButton that toggles a Frame. Add a ScreenGui with a TextButton and a Frame, then insert this LocalScript under the ScreenGui.", code: `-- Place this LocalScript under: StarterGui > ScreenGui local gui = script.Parent local button = gui:WaitForChild("TextButton") local frame = gui:WaitForChild("Frame") frame.Visible = false button.Text = "Toggle Menu" button.MouseButton1Click:Connect(function() frame.Visible = not frame.Visible end)`, }, { name: "Car Spawner (ServerScript + RemoteEvent)", description: "Add a car Model to ReplicatedStorage named 'CarModel'. Add a RemoteEvent in ReplicatedStorage named 'SpawnCar'. Place this Script in ServerScriptService.", code: `-- ServerScriptService > Script local ReplicatedStorage = game:GetService("ReplicatedStorage") local SpawnCar = ReplicatedStorage:WaitForChild("SpawnCar") -- RemoteEvent local CarModel = ReplicatedStorage:WaitForChild("CarModel") -- Model local function spawnCarForPlayer(player) local character = player.Character or player.CharacterAdded:Wait() local origin = character:GetPivot() local car = CarModel:Clone() car:PivotTo(origin * CFrame.new(0, 0, -12)) car.Parent = workspace end SpawnCar.OnServerEvent:Connect(function(player) spawnCarForPlayer(player) end) -- Optional LocalScript to trigger (e.g., from a GUI button): -- ReplicatedStorage.SpawnCar:FireServer()`, }, { name: "Teleport System (Part Touch)", description: "Add two Parts: 'TeleportPart' and 'Destination'. Touching TeleportPart moves the character to Destination.", code: `-- Workspace > Script local teleportPart = workspace:WaitForChild("TeleportPart") local destination = workspace:WaitForChild("Destination") teleportPart.Touched:Connect(function(hit) local char = hit.Parent if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") if hum then char:PivotTo(destination.CFrame + Vector3.new(0, 3, 0)) end end)`, }, { name: "Roleplay Tool (DisplayName + Simple Emote)", description: "Prefixes player DisplayName with role and lets them play an emote. Create an Animation in ReplicatedStorage named 'WaveAnim' with a valid AnimationId.", code: `-- ServerScriptService > Script game.Players.PlayerAdded:Connect(function(plr) plr:SetAttribute("Role", "Citizen") -- Change as needed plr.CharacterAdded:Connect(function(char) local role = plr:GetAttribute("Role") or "Citizen" plr.DisplayName = string.format("[%s] %s", role, plr.Name) end) end) -- LocalScript example to play an emote (StarterPlayerScripts > LocalScript): -- local Players = game:GetService("Players") -- local ReplicatedStorage = game:GetService("ReplicatedStorage") -- local anim = ReplicatedStorage:WaitForChild("WaveAnim") -- Animation -- local player = Players.LocalPlayer -- player.CharacterAdded:Connect(function(char) -- local hum = char:WaitForChild("Humanoid") -- local track = hum:LoadAnimation(anim) -- -- Bind to a button/key or GUI: -- -- track:Play() -- end)`, }, { name: "House Customization (Change Colors/Materials)", description: "Change materials/colors of parts under a 'House' model. Duplicate for more advanced systems with UIs and saved configs.", code: `-- Workspace > Script local house = workspace:WaitForChild("House") local targetColor = BrickColor.new("Pastel blue-green") local targetMaterial = Enum.Material.SmoothPlastic for _, d in ipairs(house:GetDescendants()) do if d:IsA("BasePart") then d.BrickColor = targetColor d.Material = targetMaterial end end -- Extend: -- - Use Attributes or Folder values for presets -- - Trigger via ProximityPrompt or GUI with RemoteEvents -- - Save per-player choices using DataStoreService`, }, ] const choice = await arg<Example>( { placeholder: "Select a Roblox Studio template (safe, no exploits)", enter: "Open in Editor", }, examples.map(e => ({ name: e.name, description: e.description, value: e, })) ) const header = `--[[ Roblox Studio Template: ${choice.name} Notes: ${choice.description} This example is for legitimate development only. No hacks, exploits, or TOS violations. Docs: - Creator Hub: https://create.roblox.com/ - Scripting Reference: https://create.roblox.com/docs/ - Remote Events: https://create.roblox.com/docs/tutorials/scripting/networking/remote-events ]]-- ` const content = `${header}${choice.code} ` await editor({ value: content, language: "lua", onEscape: async () => { await copy(content) await notify("Template copied to clipboard") }, shortcuts: [ { name: "Copy to Clipboard", key: `${cmd}+c`, onPress: async () => { await copy(content) await notify("Template copied to clipboard") }, bar: "right", }, ], })