# data[].attributes.body
Activity
§ Create a car in Roblox

Concepts
§ Seats
§ Hinges

Requirements
§ Create a drivable block with a seat
§ Add a body to the car
§ Add windows
§ Add side mirrors(High reflectance!)

# data[].attributes.attachment_link.readable_text
Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

2. Set Spring Properties

Assemble Wheel Unit

1. Move Wheel and Mount Together

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

2. Test Shock Absorber

A. Anchor Wheel Mount

B. Test Shock

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

C. Un-Anchor Wheel Mount

3. Group Wheel and Mount

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

Duplicate Wheels

1. Move Wheel Against Base

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

2. Duplicate/Move Back Wheel

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

3. Duplicate/Move Front Wheels

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

Part0

WheelMount

Part1

Base

Hinge Front Wheels to Base

1. Create Hinge Constraints

A. Select Hinge Constraint

B. Create Constraints

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

2. Set Hinge Properties (Both Sides)

A. Select Both Hinges

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

B. Set Hinges as Servos

C. Set Servo Properties

3. Move Hinge Attachments

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead.

Drive!

# data[].attributes.attachment_link.description
Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead. Uh oh! Your browser doesn't appear to support embedded videos! Here is a direct link to the video instead. Uh oh! Your browser doesn't appear to support embedded videos!

# data[].attributes.body
Activity
§ Build an obby

Concepts
§  Parts
§  Basic Properties(Collisions, Color, Materials, Anchored)

Requirements

§  Use at least 5 of each part

§  Change the color of the parts

§  Change the material of the parts

# data[].attributes.body
Activity
§ Create a Building

Concepts
§ Align
§ Negate
§ Group
§ Union

Requirements
§ At least 4 walls
§ A roof
§ At least 2 windows
§ At least 1 door

# data[].attributes.body
Activity
§ Capture the flag map.
§ Use the CTF template and items from the toolbox like weapons, vehicles, and buildings to design your map

Concepts
§ Learning to use the toolbox

Requirements
§ 3 weapon pickups on each side
§ 1 building added on each side
§ 2 vehicles on each side

# data[].attributes.body
Activity
§ Use the obby you created in week one or the obby template to add scripted parts to help and hurt the player

Requirements
§ Use one of each of the required scripts in your game

Scripts Covered
§ Damage script
§ Speed boost script
§ Jump boost script

Additional Notes
§ Publish game and switch settings from jump height to jump power

# data[].attributes.attachment_link.readable_text
--Damage Script
local part = script.Parent

local function onTouch(otherPart)
	local character = otherPart.Parent
	local humanoid = character:FindFirstChildWhichIsA("Humanoid")
	
	if humanoid then 
		--Change the number for different damage
		humanoid.Health = humanoid.Health - 10
	end
end 
   
part.Touched:Connect(onTouch)

--Jump Boost Script
local part = script.Parent

local function onTouch(otherPart)
	local character = otherPart.Parent
	local humanoid = character:FindFirstChildWhichIsA("Humanoid")
	
	if humanoid and humanoid.JumpPower <= 50 then
		--Change number here for more or less of a boost
		humanoid.JumpPower = 200
		wait(5)
		humanoid.JumpPower = 50
	end 
end

part.Touched:Connect(onTouch)

--Speed Boost Script
local part = script.Parent

local function onTouch(otherPart)
	local character = otherPart.Parent
	local humanoid = character:FindFirstChildWhichIsA("Humanoid")
	
	if humanoid and humanoid.WalkSpeed <= 16 then
		print("A humanoid touched SpeedBoost")
		--Change number here to make boost higher or lower
		humanoid.WalkSpeed = 50
		--Makes boost lower over time
		while humanoid.WalkSpeed >16 do
			humanoid.WalkSpeed = humanoid.WalkSpeed - 1
			wait(.1)
		end
	end 
end

part.Touched:Connect(onTouch)

# data[].attributes.body
Activity
§ Creating a weapon in Roblox that damages a player and quickly changes time to night and back

Concepts
§ Local vs server scripts
§ Remote events
§ Ray casting
§ Custom tools
§ Welding

Requirements
§ Construct the wand
§ Code the wand

Helpful Links
§ https://www.youtube.com/watch?v=M_S-xFRUGBk&t=315s
§ https://developer.roblox.com/en-us/articles/intro-to-player-tools

# data[].attributes.attachment_link.readable_text
--Server script
local tool = script.Parent
--Day to night script
local function onActivate()
	if game.Lighting.ClockTime >= 8 and game.Lighting.ClockTime < 16 then
		game.Lighting.ClockTime = 20
		wait(.1)
		game.Lighting.ClockTime = 8
	end
end

tool.Activated:Connect(onActivate)


script.Parent.Fire.OnServerEvent:Connect(function(player,mousePos)
	local raycastParams = RaycastParams.new()
	--ray ignores player
	raycastParams.FilterDescendantsInstances={player.Character}
	raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
	
	local raycastResult = workspace:Raycast(script.Parent.Handle.Position,(mousePos-script.Parent.Handle.Position)*300,raycastParams)	
	if raycastResult then
		local hitPart = raycastResult.Instance
		local model = hitPart:FindFirstAncestorOfClass("Model")
		
		if model then
			if model:FindFirstChild("Humanoid") then
				model.Humanoid.Health-= 30
			end
		end
	end	
end)


--Local script
local mouse = game.Players.LocalPlayer:GetMouse()

mouse.Button1Down:Connect(function()
	script.Parent.Fire:FireServer(mouse.Hit.p)
end)

# data[].attributes.body
Activity
§ Create a boulder trap using unanchored parts and scripts

Concepts
§ Anchoring
§ Touching event
§ Kill scripts
§ Grouping
§ Position Changing

Requirements
§ Finish your own version of the boulder trap

Scripts Covered
§ Part teleportation script
§ Kill script

# data[].attributes.body
Activity
§ Use unanchored cubes and gravity setting to create a 8x8 pixel-art masterpiece!

Concepts
§ Unanchored blocks
§ Snap tool

Requirements
§ Build an 8x8 using 4x4x4 blocks
§ Use snap tool to set move snap to 4
§ Unanchor blocks and use move tool to space out rows
§ Build case around blocks(Keep snap on for this)

# data[].attributes.body
Activity
§ Use parts and welding to create your own monster/creature and put it in the Code Ninjas haunted house.

Concepts
§ Welds
§ Joints
§ Uploading to toolbox

Requirements
§ Create a creature with at least 4 welds

# data[].attributes.body
Activity
§ Spawn an assortment of gifts. One gift explodes upon click, all the others award points.

Concepts
§ Click event
§ Explosion effect
§ Random spawn
§ Models
§ Primary parts

Requirements
§ Create a gift that does not explode and spawns in a random area
§ Duplicate the gift several times and add bomb script to one

# data[].attributes.body
Activity
§ Create your own custom food and assemble a feast on the dinner table.

Concepts
§ Consumables
§ Health Restoration

# data[].attributes.body
Activity
§ Create 3 islands that you can teleport between using scripts

Requirements
§ Create 3 islands by using terrain editor then deleting the baseplate afterward
§ Place at least one object to put the teleportation script into on each island
§ Put teleportation script into parts and adjust coordinates to be somewhere on a different island

Scripts Covered
§ Teleportation Script

# data[].attributes.attachment_link.readable_text
--Teleportation Script
script.Parent.Touched:Connect(function(hit)
	if hit.Parent:FindFirstChild('Humanoid') then
		--Change coordinates here
		hit.Parent.UpperTorso.CFrame = CFrame.new(24.45, 13, 53.535)
	end
end)

# data[].attributes.body
Activity
§ Design your own custom clothes in Roblox

Concepts
§ Asset editing
§ Clothing in Roblox

Requirements
§ Create a shirt
§ Create pants

Helpful Links
https://developer.roblox.com/en-us/articles/How-to-Make-Shirts-and-Pants-for-Roblox-Characters

# data[].attributes.attachment_link.readable_text
This article outlines how to make avatar pants and shirts, either for yourself or to sell in the catalog.

T-Shirt Decals

The easiest (but most limited) clothing design is a t-shirt which is basically an image applied to the front of an avatar's torso. To make a t-shirt, create an image (ideally 512×512 pixels) and then articles/game assets#images|upload it to Roblox.

Shirts and Pants

Unlike t-shirts, shirts and pants wrap all the way around an avatar's body, giving you more design control. To get started, download the following clothing templates and draw your own art on top.

Right-click these images and select Save Image As... to save the templates to your computer.

On each template, notice that the parts are "folded up" and wrapped around a Roblox character's body, arms, and legs. Here are the sizes for each template part:

1. Open a template in the image editor of your choice; some free options include GIMP and Paint.NET.

2. Design your clothing item and then articles/game assets#images|upload it to Roblox. Note that you can use 8-bit alpha channels for transparent regions.

Uploading Clothing

Upload/Selling Fees

To upload or sell certain items, you must first pay a fee. An upload fee is paid when an item is first uploaded, before it is moderated. A selling fee is paid the first time an item is marked "on sale" and becomes available for other users to purchase.

Item Type

Cost

Fee Type

Shirt, Pants

10

Upload Fee

T-Shirt

10

Selling Fee

Hat, Hair Accessory, Face Accessory, Neck Accessory, Shoulder Accessory, Front Accessory, Back Accessory, Waist Accessory

750

Upload Fee

Testing Clothing

Clothing can be tested without paying a fee as outlined below:

In Studio, open the Plugins tab and click Build Rig.

Choose a rig type from the popup menu. This should drop a "Dummy" avatar in your workspace.

In the Explorer window, hover over the Dummy object, click the button, and insert either a ShirtGraphic (T-Shirt), Shirt, or Pants object according to your clothing type.

Locate and select the new Shirt Graphic or Clothing object inside the dummy.

In the Properties window, locate the associated property as follows:

Click inside the property's row and select the image you uploaded to Roblox. This should apply the clothing to the dummy avatar so you can see how it looks.

To make sure your clothing looks as good as possible on as many avatars as possible, make sure you test on a few different rig types.

Upload Process

Once you've finalized and tested your design, you can upload the clothing item to Roblox.

1. Go to the Create page.

2. Click on either Shirts, Pants, or T-Shirts in the left column, depending on your design.

3. In the main area of the window, click Choose File to select your template file. Remember that your image must be the exactly 585 pixels wide and 559 pixels tall or the upload process will fail.

4. Type in a creative name for your item.

5. Click the Upload button. Once approved by Roblox, the item will show up as one of your creations and can be applied to your avatar or offered for sale to other Roblox players.

# data[].attributes.attachment_link.description
This article outlines how to make avatar pants and shirts, either for yourself or to sell in the catalog. The easiest (but most limited) clothing design is a t-shirt which is basically an image applied to the front of an avatar's torso.

# data[].attributes.body
Activity
§ Build an island

Concepts
§ Terrain editor

Requirements
§ Build a land mass on a baseplate
§ Use sea level to turn land into island
§ Detail island using parts and items from the toolbox
§ 1 cave

# data[].attributes.body
Activity
§ Add effects to our parts along with making our own particle effects

Concepts
§ Particle Effects
§ Properties

Requirements
§ Create your own particle effect and apply it to a part

# data[].attributes.body
Activity
§ Create your own signs and decals

Concepts
§ Surface GUI
§ Decals

Requirements
§ Create 1 sign(Block with text)
§ Create 1 poster(Block with decal)

# data[].attributes.attachment_link.readable_text
--Boulder Script
local part = script.Parent

local function onTouch(otherPart)
	local character = otherPart.Parent
	local humanoid = character:FindFirstChildWhichIsA("Humanoid")

	if humanoid then 
		humanoid.Health = 0
		wait(.5)
		part.CFrame = CFrame.new(-7.211, 13.909, 24.763)

	end
end 

part.Touched:Connect(onTouch)

--Invisible Wall Script
local part = script.Parent

local function teleport(otherPart)
	if otherPart.Name == 'Ball' then
		otherPart.CFrame = CFrame.new(-7.211, 13.909, 24.763)
	end
end

part.Touched:Connect(teleport)

# data[].attributes.attachment_link.readable_text
--random model position
local model = script.Parent
local position = Vector3.new(math.random(10),math.random(10),math.random(10))

model:SetPrimaryPartCFrame(CFrame.new(position))


--click destroy
-- The 'BasePart'
local part = script.Parent
part.BrickColor=BrickColor.Random()

local ClickDetector = Instance.new("ClickDetector")
ClickDetector.Parent = part
ClickDetector.MaxActivationDistance = 36

-- change part color on left mouse click
ClickDetector.MouseClick:Connect(function()
	part:Destroy()
end)



--bomb script
local part =script.Parent
local ClickDetector = Instance.new("ClickDetector")
ClickDetector.Parent = part
ClickDetector.MaxActivationDistance = 42

-- change part color on left mouse click
ClickDetector.MouseClick:Connect(function()
	local explosion = Instance.new("Explosion")
	explosion.BlastRadius = 60
	explosion.ExplosionType = Enum.ExplosionType.NoCraters -- damages terrain
	explosion.Position = part.Position
	explosion.Parent = game.Workspace
	part:Destroy()
end)

# data[].attributes.body
Activity
§ Use team create to create a city full of our other creations

Concepts
§ Team Create
§ Uploading to toolbox

Requirements
§ Make at least 3 contributions to our Code Ninjas City

# data[].attributes.body
local DataStoreService = game:GetService('DataStoreService')

local playerData = DataStoreService:GetDataStore('PlayerData')

-----------------------------------------------------------------

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

local value = Instance.new("NumberValue",player)

value.Name="Currency"

local playerUserId ='Player_'..player.UserId

local data = playerData:GetAsync(playerUserId)

if data then

player.Currency.Value =data

else

player.Currency.Value = 0

end

end)

-----------------------------------------------------------------

game.Players.PlayerRemoving:Connect(function(player)

local success, err = pcall(function()

local playerUserId ='Player_'..player.UserId

playerData:SetAsync(playerUserId, player.Currency.Value)

end)

if not success then

warn('Could not save data')

end

end)

# data[].attributes.body
local pathGenerated = false

function generateDomino(position)

local domino = Instance.new("Part")

domino.Position=position

domino.Orientation=Vector3.new(0,90,0)

domino.Name="domino"

domino.BrickColor=BrickColor.Random()

domino.Parent=game.Workspace

domino.Anchored=true

end