Code Snippets: Difference between revisions
From Goodblox Wiki
Jump to navigationJump to search
Pizzaboxer (talk | contribs) (Created page with "__TOC__ ==Introduction== These are published articles to help you understand how certain creations in Roblox work and how they where developed. It is not a source for free s...") |
Pizzaboxer (talk | contribs) No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
==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) | |||
[[Category:Scripting Tutorials]] | |||
[[ | |||
Latest revision as of 16:26, 22 June 2020
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)