function lightOnFire(part) fire = Instance.new("Fire") fire.Parent = part end
firePart = game.Workspace.FirePart firePart.Touched:connect(lightOnFire)
what does it mean by fire.Parent = part?
And how does it know which part it is?
lightOnFire
is a function.
Functions take in some values, do something with those values, then can choose to output some values.
The values to take in are between the ()
in the function definition; in this case, it takes in a part
.
Thus if I were to call lightOnFire(workspace.Baseplate)
, lightOnFIre
would run with part
as workspace.Baseplate
.
When you connect lightOnFire
to a Touched event with firePart.Touched:connect(lightOnFire)
, that means "call this function with the part that touhed firePart
whenever it gets touched".
Please, PLEASE use a code block. They make this much nicer!
print("Hello world!")
Ok, so moving on. This is a variable. So you can do this!
local Info = "123456" print("The info is"..Info.."!") if Info < 1234567 then print(Info.." is less than 1234567!") end
What this will do in the output is say "123456" and "123456 is less than 1234567!" But this is not only used for print and if's statements, it can be used for much more as a debounce, shortcut in scripting, and easy acess to something! Like this
local IsScriptRunning = false -- debounce. A debounce should be used like on clicked and touched functions. function Clicked() if IsScriptRunning == false then local IsScriptRunning = true -- Make it impossible to go through the if statement. print("Yay it works!") local Brick = game.Workspace.Part Brick.BrickColor = BrickColor.new("Lime green") local IsScriptRunning = false --Makes the function useable. end end script.Parent.MouseButton1Click:connect(Clicked)
So those were some basic examples, so variubles can also be used as this. And some scripts have lots of variubles, so there not junk. Like in a tycoon script
local Tycoons = {} local Teams = game:GetService('Teams') local Settings = require(script.Parent.Settings) local BC = BrickColor local Storage = Instance.new('Folder', game.ServerStorage) Storage.Name = "PlayerMoney" Instance.new('Model',workspace).Name = "PartStorage" -- parts dropped go in here to be killed >:) function returnColorTaken(color) for i,v in pairs(Teams:GetChildren()) do if v:IsA('Team') then if v.TeamColor == color then return true end end end return false end --run this first so if there is a 'white' team it is switched over if not Settings['AutoAssignTeams'] then local teamHire = Instance.new('Team', Teams) teamHire.TeamColor = BC.new('White') teamHire.Name = "For Hire" end for i,v in pairs(script.Parent:WaitForChild('Tycoons'):GetChildren()) do Tycoons[v.Name] = v:Clone() -- Store the tycoons then make teams depending on the tycoon names if returnColorTaken(v.TeamColor) then --//Handle duplicate team colors local newColor; repeat wait() newColor = BC.Random() until returnColorTaken(newColor) == false v.TeamColor.Value = newColor end --Now that there are for sure no duplicates, make your teams local NewTeam = Instance.new('Team',Teams) NewTeam.Name = v.Name NewTeam.TeamColor = v.TeamColor.Value if not Settings['AutoAssignTeams'] then NewTeam.AutoAssignable = false end v.PurchaseHandler.Disabled = false end function getPlrTycoon(player) for i,v in pairs(script.Parent.Tycoons:GetChildren()) do if v:IsA("Model") then if v.Owner.Value == player then return v end end end return nil end game.Players.PlayerAdded:connect(function(player) local plrStats = Instance.new("NumberValue",game.ServerStorage.PlayerMoney) plrStats.Name = player.Name local isOwner = Instance.new("ObjectValue",plrStats) isOwner.Name = "OwnsTycoon" end) game.Players.PlayerRemoving:connect(function(player) local plrStats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name) if plrStats ~= nil then plrStats:Destroy() end local tycoon = getPlrTycoon(player) if tycoon then local backup = Tycoons[tycoon.Name]:Clone() tycoon:Destroy() wait() backup.Parent=script.Parent.Tycoons end end)
So yeah, that's how important variubles are.