This has been bothering me a lot, So I posted earlier about a script that decreases a Gui size, but I'm having trouble finding a location where to put this in.
At the moment there is no end, and it says
17:37:17.653 - Workspace.Water2.WaterScript:87: 'end' expected (to close 'function' at line 8) near '<eof>'
I have tried putting it after every function, and it either stops the script right there, or doesn't even allow the script to work.
It could be the placement of the Gui decrease script (lines 34 - 50)
This is the script
local Tool = script.Parent; enabled = true function onActivated() if not enabled then return end enabled = false Tool.GripForward = Vector3.new(0,-.759,-.651) Tool.GripPos = Vector3.new(1.5,-.5,.3) Tool.GripRight = Vector3.new(1,0,0) Tool.GripUp = Vector3.new(0,.651,-.759) Tool.Handle.DrinkSound:Play() script.Parent.Bites.Value = script.Parent.Bites.Value + 1 Eable() wait(3) local character = Tool.Parent local player = game.Players:GetPlayerFromCharacter( character ) local thirst = player.PlayerGui.Thirst local maxthirst = 100 --create a max thirst value local currentthirst = 100 --create a currentthirst value local currentthirstpercent = currentthirst/maxthirst --divide currentthirst by maxthirst to create a value between 0 and 1 to represent the percentage of thirst left. function updatebar() --a function that will update the thirst bar. run this whenever you change the thirst local currentthirstpercent = currentthirst/maxthirst --re-divides the thirst values thirst.BG.Bar.Size = UDim2.new(currentthirstpercent,0,1,0) --sets the size in the x of the bar to the percentage of thirst remaining end function drink() --example function for increasing thirst currentthirst = currentthirst + -50 --add thirst together if currentthirst > maxthirst then --checks to see you aren't over the max currentthirst = maxthirst --if you're over the max it sets you to the max end function updatebar() --updates the bar because you changed the value of thirst end Tool.GripForward = Vector3.new(-.976,0,-0.217) Tool.GripPos = Vector3.new(0.03,0,0) Tool.GripRight = Vector3.new(.217,0,-.976) Tool.GripUp = Vector3.new(0,1,0) enabled = true end function onEquipped() Tool.Handle.OpenSound:play() end function Eable() if (script.Parent.Bites.Value) > 5 then script.Parent:Remove() end end script.Parent.Activated:connect(onActivated) script.Parent.Equipped:connect(onEquipped)
This isn't a specific answer to your code, but a general answer about tabbing and pairing end
s with things.
end
sTabbing code correctly is very important -- but first you have to know what tabbing correctly looks like!
In Lua, we have lines of code. Usually a line will be a single statement:
wait(5) local part = game.Workspace.Part
They will also be controls, end
s, and function
definitions:
if condition then elseif blah then else end function doSomething() end
Lua itself doesn't care where you put lines (or tabs, or spaces). Thus, when we say "line", we mean the way that it's usually done (like above).
There are also blocks of code. These are groupings of lines inside a particular control structure:
then
and any of else
, elseif
, end
else
and end
do
and end
(for do
, while do
, and also just do
)repeat
and until
function
and end
Each subsequent block gets tabbed:
function doSomething( arg, dog ) if not arg then for i = 1, 20 do print(i) end elseif arg + 9 == 0 then if dog == "cat" then do print("It's a ", dog) end end end function insideOtherFunction() -- don't usually do this print("Something!") end insideOtherFunction() end
The basic rules:
do
, then
, function
, else
start blocks. end
and until
stop them.
Every time you start one, you increase number of tabs. Every time you stop one, you decrease number of tabs.
Then everything "inside" should be to the right of the thing.
Thus if you see something like
.... if blah then start() middle() finish() after() always() end
Something is wrong -- indentation decreased when there wasn't an end
, so you probably made a mistake in placing the end
(it should probably have gone between finish()
and after()
)
At line 49, you attempted to call the function incorrectly. You said function updatebar()
instead of just updatebar()
. Hope this helped!
Well it doesn't help that your tabbing is messy, once you can get your tabbing better you will find it a lot easier to put in ends/else/elseifs.
I suggest tabbing it all out and checking if there are any areas missing an end.
And you are attempted to overwrite your function updatebar() in line 49 inside another function, I suggest taking a look at that.