Code Snippets: Difference between revisions

From Goodblox Wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
Line 263: Line 263:


  script.Parent.Touched:connect(ont)
  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)