Code Snippets

From Goodblox Wiki
Jump to navigationJump to search

Introduction

Below are common codes used in scripts. You can use these in your scripts, or to learn from them.

Random Number

Generates a random number between 3 and 9 inclusively:

math.random(3,9)

Create an Explosion

The following function creates an explosion at a given position in 3D space.

function createExplosion(position)

  explosion = Instance.new("Explosion")--Creates The Explosion.
  explosion.Position = position --Where The Explosion Is.
  explosion.Parent = game.Workspace --Puts the explosion in the game.

end

To create an explosion at (0, 100, 0), for example, you would do:

createExplosion(Vector3.new(0,100,0))

Create a Deadly brick

The following script kills any humanoid that touches it.

function onTouched(hit)
	local human = hit.Parent:FindFirstChild("Humanoid") 
       --Basically this just checks to see if it is a real player touching this brick.
	if (human ~= nil) then --If it is a real player, then DESTROY THEM!
		human.Health = 0 --Your Health Is Now 0.
	end
end

if (script.Parent ~= nil) and (script.Parent.className == "Part") then --Work if in a block
	connection = script.Parent.Touched:connect(onTouched)
end

Color Changing

Changes colors indefinitely.

while true do
  script.Parent.Color = Color3.new(math.random(), math.random(), math.random())
  wait(0.5) --Waits 1/2 a second till swapping to a random color.
end 

Healing Potion

Ready-to-go script. Add it onto a block, and it activates on touch.

power = 10 --How fast you want to heal people.
function onTouched(part)
  local h = part.Parent:FindFirstChild("Humanoid")
  if h~=nil then
     h.Health = h.Health + power
  end
end

script.Parent.Touched:connect(onTouched) --If touched, then run.

Regeneration

You can use this script, just put it into the Workspace, not a brick or model. Just change the "MyModelName" with the name of your model.

model = game.Workspace.MyModelName --Replace the 'MyModelName' with the name of your model.
messageText = "Regenerating MyModelName..." --And replace it here!
message = Instance.new("Message")--Make a Message
message.Text = messageText
backup = model:clone()--Got to Make A Back-Up.

while true do --This Makes It Continuous
	wait(300) --How long till regeneration.
	message.Parent = game.Workspace --The Message Should Show To Everyone
	model:remove()

	wait(4) -- display regen message for 4 seconds

	model = backup:clone() --Clone the Back-up To Make Another One
	model.Parent = game.Workspace --You Got To See It Right?
	model:makeJoints() --Make Sure It Doesn't Fall Apart.
	message.Parent = nil --clears message
end

Regeneration-In-Model Script

  • Name Regeneration-In-Model Script
  • Type You put this regeneration script inside a MODEL, NOT the workspace.
  • Author Furnace
model = script.Parent
backup = model:Clone()
regentime = 300 --5 minutes
message = Instance.new("Message")
message.Text = "Regenerating ".. model.Name.. "..."
if (model ~= game.Workspace) then
  while true do
   wait(regentime)
   m = message:Clone()
   m.Parent = game.Workspace
   wait(1)
   model:remove()
   model = backup:Clone()
   wait(3)
   model.Parent = game.Workspace
   model:MakeJoints()
   m.Parent = nil
  end
end

Anti-Flying Script

  • Name Anti-flying script
  • Type Cheating prevention script for those who hate flyers.
  • Author Gamer3D
  • Description This script blasts flyers out of the sky. When it is placed in a brick to protect and it's sensitivity is adjusted, it will kill flyers, and leave plain loiterers alone.
  • This script is outdated, you can no longer use the flying bug.
  • Code
tracked = nil -- Keep track of checked players so we don't blow up plain loiterers
trackedPosition = nil

sensitivity = 1 -- 1 is normal. Higher values indicate higher sensitivity

function checkIfFlyer(player, brick, slot)
	local relativePos = brick.Position - player.Character.PrimaryPart.Position
	if (relativePos.magnitude < 4 * sensitivity) then -- Brick is within normal distance for flying
		if (relativePos.y > -2 * sensitivity) and (relativePos.y < sensitivity) then -- Brick is at a good height for flying
			if tracked = player then
				local moveDist = player.Character.PrimaryPart.Position - trackedPosition
				if (moveDist.magnitude * sensitivity > 8) then -- Player moved away, but kept brick. Almost certainly a flyer.
					return true
				end
			end
			tracked = player
			trackedPosition = player.PrimaryPart.Position
		end
	end
	return false
end

function makeExplosion(Pos) -- Blow up
	local myExplosion = Instance.new("Explosion")
	myExplosion.Position = Pos
	myExplosion.Parent = game.Workspace
end

-- Main loop
playerList = game.Players:children()
brickList = nil
while true do
	if (script.Parent.className == "Part") then
		for i = 1, #playerList do
			if checkIfFlyer(playerList[i], script.Parent, 1) then
				wait(0.5)
				makeExplosion(script.Parent.Position)
			end
		end
		playerList = game.Players:children() -- Keep track of new players too
	end

	if (#PlayerList == 0) then -- No sense bogging anything down.
		wait(10)
	end
	if (#playerList > 0) then
		wait(2)
	end
end

Talky Regeneration

  • Name TalkyRegenScript
  • Type Regens a model
  • Author matrix35
  • Description Regens a model by saying a word
  • Notes (in script)
  • Code


model = game.Workspace.Model -- The model to regenerate. Change Model to the models name
backup = model:clone() -- clones the model

function onChatted(msg, recipient, speaker) 

local source = string.lower(speaker.Name) 
msg = string.lower(msg) 

if (msg == "regen") then -- The word you want people to say to regen it. change it
model:remove() --removes the model
model = backup:clone() --clones the model
model.Parent = game.Workspace -- makes the parent the Workspac
model:makeJoints() -- generates the model
end 

end 

function onPlayerEntered(newPlayer) 
newPlayer.Chatted:connect(function(msg, recipient) onChatted(msg, recipient, newPlayer) end) 
end 

game.Players.ChildAdded:connect(onPlayerEntered) 

-- When you are done editing this, save this place then go to it then say the word to regenerate the model.

Turn all your bricks a certain color

  • Name Unknown
  • Type
  • Author Unknown
  • Description
  • Notes Put script in Workspace
  • Code
function turnBlack(where)
local ch=where:GetChildren() --note that we need local; see below
local i = 0
for i = 1, #ch do -- one number for each "child" 
if #ch[i]:GetChildren()>0 then turnBlack(ch[i]) end -- when to stop this loop 
if ch[i].className=="Part" or ch[i].className=="Seat" or ch[i].className=="SpawnLocation" then ch[i].BrickColor=BrickColor.new("Black") end -- what specific objects to change colors (e.g., bricks, not cameras)
end
end
turnBlack(game.Workspace)

What color is this brick?

  • Name What color is this brick?
  • Type
  • Author Unknown
  • Description
  • Notes Put script in brick
  • Code
function onTouched(hit) 

c=script.Parent.BrickColor
if c==BrickColor.new("Bright red") then
print("it's red!")
else
print("It's not red.")
end
end

script.Parent.Touched:connect(onTouched)

Random Messages

  • Note: This will select a random message from your prewritten group of messages and print it out.
local randommessages = {"Sample message 1",  "Sample message 2", "Sample message 3", "Sample message 4", "Sample message 5", "Sample message 6"}   
local rndmsg = math.random(1, 6) 
--Random number between 1, and the number of items in the table  
print(randommessages[rndmsg])  

Simple Breaking Ice

When the brick inside gets touched, it has a 3 in 5 chance for breaking for a moment.

  • Name Ice
  • Type Random number usage
  • Author WhoKnows OR main account TheName, WhoKnowsAndTheName on wiki.
  • Description
  • Notes Put script in brick
  • Code
function ont(hit)
hum = hit.Parent:findFirstChild("Humanoid")
if (hum ~= nil) then
	mn = math.random(1, 5)
	if (mn ~= 3) and (mn ~= 4) and (mn ~= 2) then
		print(mn)
		else
		print(mn)
		script.Parent.Transparency =   1
		script.Parent.CanCollide = false
		wait(0.5)
		script.Parent.Transparency = 0.5
		script.Parent.CanCollide = true
		end
	end
end
script.Parent.Touched:connect(ont)