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)