Hi all,
I’m a new scripter and I was working on a script for a simulator type game for practice. I created a script for the ore/rocks, but it’s kind of messy (Here’s an example):
print(Table[OtherTable[IndexOne]][2])
Q:Is is possible to reference an index of a table instead of the value?
First Question
print(Table[OtherTable[IndexOne]][2])
The above table reference (and others ones) crowd out my code. I could put the value into a variable:
local CoolDown = Table[OtherTable[IndexOne]][2]
print(CoolDown)
This is much easier to understand, especially if it’s used multiple times, but let’s say I want to change the value of the CoolDown (The table value not the variable)
local CoolDown = Table[OtherTable[IndexOne]][2]
print(CoolDown)
CoolDown = 55
This won’t change the actual table, only the variable CoolDown.
My question is: Is there any way I can change the value in the table without having to type:
Table[OtherTable[IndexOne]][2] = 55
Q:Is it worth using variable if I only use the reference once?
Second question
Script Example
Here’s a function/coroutine that resets a mined rock after it’s cooldown is complete:
local RockCoolDownCoroutine = coroutine.wrap (function()
while true do
for NumberOfRocks = 1, 4, 1 do
if RockCoolDownTable[ItemTable["Rock"][NumberOfRocks]] > 0 then
RockCoolDownTable[ItemTable["Rock"][NumberOfRocks]] = RockCoolDownTable[ItemTable["Rock"][NumberOfRocks]] - 1
if RockCoolDownTable[ItemTable["Rock"][NumberOfRocks]] == 0 then
game.Workspace[ItemTable["Rock"][NumberOfRocks]].BrickColor = BrickColor.new(RockDataTable[ItemTable["Rock"][NumberOfRocks]][3])
CurrentRockStrengthTable[ItemTable["Rock"][NumberOfRocks]] = OriginalStrength = RockDataTable[ItemTable["Rock"][NumberOfRocks]]
end
end
RockCoolDownTable[ItemTable["Rock"][NumberOfRocks]] = CoolDown
end
RunService.Heartbeat:Wait()
end
end)
My other question is: Is it worth putting these references into variables?
I mean, It makes sense if I use the reference a lot, but sometimes I only use it once or twice, is it really worth adding another line of code to my script to make one or two other ones more readable?
This is kind of a nitpick, but I want to get this right the first time. I know an extra variable won’t make a dent on my memory usage (I heard that this is what you want to measure performance wise (correct me if I’m wrong)) but is it counter productive when it comes to cleaning up my code?
Here’s an example:
Original
Rock.BrickColor = BrickColor.new(RockDataTable[ItemTable["Rock"][NumberOfRocks]][3])
local OriginalColor = RockDataTable[ItemTable["Rock"][NumberOfRocks]][3]
Rock.BrickColor = BrickColor.new(OriginalColor)
I only use this variable once. It makes the second line so much easier to understand, but is it worth a whole other line of code?
Thank you for any feedback! (any feedback on the coroutine in general is also welcome).