Can't parameterize a function

So I ended up with this, which is obviously not parameterized but is slightly “more working” than previous code. Now the problem is that it doesn’t go further than 1st iteration.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --\> POWERUPS local used = {} used[0]=true used[1]=true local ready\_to\_randomize = {} ready\_to\_randomize[0]=true ready\_to\_randomize[1]=true local counter = {} counter[0]=true counter[1]=true local loading = {} local rand = {} local power\_button = {} local current = {} local powerup\_sound = {} local counter = {} counter[0]=-1 counter[1]=-1 local staging\_powerup = {} local function restorePower()--ripristina potenza di tiro shootPowerDefault=0.01 end local function restoreDim()--ripristina dimensioni(?) pdim=10 end local function powerup\_usage() -- power\_button\_red.fill.effect = "filter.grayscale" power\_button[n].alpha=0 used[n]=true print ("X") if current[n]==1 then print ("a") powerup\_sound[n] = audio.loadSound( "sounds/powerup1\_sound.wav") audio.play(powerup1\_sound, {channel=6}) ball.isAwake=false elseif current[n]==2 then print ("b") powerup\_sound[n] = audio.loadSound( "sounds/powerup2\_sound.wav" ) audio.play(powerup2\_sound, {channel=6}) elseif current[n]==3 then print ("c") powerup\_sound[n] = audio.loadSound( "sounds/powerup3\_sound.wav" ) audio.play(powerup\_sound[n], {channel=6}) shootPowerDefault=0.1 timer.performWithDelay(1500, restorePower) elseif current[n]==4 then print ("d") powerup\_sound[n] = audio.loadSound( "sounds/powerup4\_sound.wav" ) audio.play(powerup\_sound[n], {channel=6}) pdim=30 timer.performWithDelay(1500, restoreDim) end print ("Y") end --TODO sistemare posizioni powerup local function powerup(n) if counter[n]~=-1 then loading[n].alpha=0 else counter[n]=0 end if used[n] and ready\_to\_randomize[n] then print("A libero B libero") rand[n]=math.random(5) if rand[n]==1 then loading[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==2 then loading[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) loading[n].alpha=1 print("B2") elseif rand[n]==3 then loading[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) loading[n].alpha=1 print("B3") elseif rand[n]==4 then loading[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) loading[n].alpha=1 print("B4") elseif rand[n]==5 then loading[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) loading[n].alpha=1 print("B5") end loading[n].x = display.contentCenterX + 115 loading[n].y = display.contentCenterY-45 counter[n]=counter[n]+1 if counter[n] ~= 5 then timer.performWithDelay(700, temp) print("rieseguo") else print("counter=5") if rand[n]==1 then power\_button[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) elseif rand[n]==2 then power\_button[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) elseif rand[n]==3 then power\_button[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) elseif rand[n]==4 then power\_button[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) elseif rand[n]==5 then power\_button[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) end power\_button[n].x = display.contentCenterX + 78 power\_button[n].y = display.contentCenterY - 65 current[n]=rand[n] power\_button[n]:addEventListener("tap", powerup\_usage) used[n]=false counter[n]=0 timer.performWithDelay(700, temp) end elseif not used[n] and ready\_to\_randomize[n] then print("A pieno B libero") loading[n].alpha=0 rand[n]=math.random(5) if rand[n]==1 then loading[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==2 then loading[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==3 then loading[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==4 then loading[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==5 then loading[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) loading[n].alpha=1 print("B1") end loading[n].x = display.contentCenterX + 115 loading[n].y = display.contentCenterY-45 counter[n]=counter[n]+1 if counter[n] ~= 5 then print("rieseguo") timer.performWithDelay(700, temp) else print("counter=5") staging\_powerup[n]=rand[n] ready\_to\_randomize[n]=false timer.performWithDelay(700, temp) end elseif used[n] and not ready\_to\_randomize[n] then print("A libero, B pieno") power\_button[n].alpha=0 rand[n] = staging\_powerup[n] if rand[n]==1 then power\_button[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) elseif rand[n]==2 then power\_button[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) elseif rand[n]==3 then power\_button[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) elseif rand[n]==4 then power\_button[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) elseif rand[n]==5 then power\_button[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) end power\_button[n].x = display.contentCenterX + 78 power\_button[n].y = display.contentCenterY-65 current[n]=rand[n] power\_button[n]:addEventListener("tap", powerup\_usage) used[n]=false ready\_to\_randomize[n]=true counter[n]=0 timer.performWithDelay(700, temp) elseif not used[n] and not ready\_to\_randomize[n] then loading[n].alpha=1 print("A pieno, B pieno") timer.performWithDelay(700, temp) end end --timer.performWithDelay(700, functio --timer.performWithDelay(700, powerup(1)) local function temp() powerup(0) end timer.performWithDelay( 700, temp)

Ok I solved the problem, now I don’t get what’s wrong with the scope (I suppose). Console tells me: table index of used[n]=true is nil. Any clue? Sorry for such a disturb. Hope this will be last question

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --\> POWERUPS local used = {} used[0]=true used[1]=true local ready\_to\_randomize = {} ready\_to\_randomize[0]=true ready\_to\_randomize[1]=true local counter = {} counter[0]=true counter[1]=true local loading = {} local rand = {} local power\_button = {} local current = {} local powerup\_sound = {} local counter = {} counter[0]=-1 counter[1]=-1 local staging\_powerup = {} local function restorePower()--ripristina potenza di tiro shootPowerDefault=0.01 end local function restoreDim()--ripristina dimensioni(?) pdim=10 end local function powerup\_usage() -- power\_button\_red.fill.effect = "filter.grayscale" --power\_button[n].alpha=0 used[n]=true print ("X") if current[n]==1 then print ("a") powerup\_sound[n] = audio.loadSound( "sounds/powerup1\_sound.wav") audio.play(powerup1\_sound, {channel=6}) ball.isAwake=false elseif current[n]==2 then print ("b") powerup\_sound[n] = audio.loadSound( "sounds/powerup2\_sound.wav" ) audio.play(powerup2\_sound, {channel=6}) elseif current[n]==3 then print ("c") powerup\_sound[n] = audio.loadSound( "sounds/powerup3\_sound.wav" ) audio.play(powerup\_sound[n], {channel=6}) shootPowerDefault=0.1 timer.performWithDelay(1500, restorePower) elseif current[n]==4 then print ("d") powerup\_sound[n] = audio.loadSound( "sounds/powerup4\_sound.wav" ) audio.play(powerup\_sound[n], {channel=6}) pdim=30 timer.performWithDelay(1500, restoreDim) end print ("Y") end --TODO sistemare posizioni powerup local function powerup(n) if counter[n]~=-1 then loading[n].alpha=0 else counter[n]=0 end if used[n] and ready\_to\_randomize[n] then print("A libero B libero") rand[n]=math.random(5) if rand[n]==1 then loading[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==2 then loading[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) loading[n].alpha=1 print("B2") elseif rand[n]==3 then loading[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) loading[n].alpha=1 print("B3") elseif rand[n]==4 then loading[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) loading[n].alpha=1 print("B4") elseif rand[n]==5 then loading[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) loading[n].alpha=1 print("B5") end loading[n].x = display.contentCenterX + 115 loading[n].y = display.contentCenterY-45 counter[n]=counter[n]+1 if counter[n] ~= 5 then timer.performWithDelay(700, function() powerup(0); end) print("rieseguo") else print("counter=5") if rand[n]==1 then power\_button[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) elseif rand[n]==2 then power\_button[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) elseif rand[n]==3 then power\_button[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) elseif rand[n]==4 then power\_button[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) elseif rand[n]==5 then power\_button[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) end power\_button[n].x = display.contentCenterX + 78 power\_button[n].y = display.contentCenterY - 65 current[n]=rand[n] power\_button[n]:addEventListener("tap", powerup\_usage) used[n]=false counter[n]=0 timer.performWithDelay(700, function() powerup(0); end) end elseif not used[n] and ready\_to\_randomize[n] then print("A pieno B libero") loading[n].alpha=0 rand[n]=math.random(5) if rand[n]==1 then loading[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==2 then loading[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==3 then loading[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==4 then loading[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) loading[n].alpha=1 print("B1") elseif rand[n]==5 then loading[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) loading[n].alpha=1 print("B1") end loading[n].x = display.contentCenterX + 115 loading[n].y = display.contentCenterY-45 counter[n]=counter[n]+1 if counter[n] ~= 5 then print("rieseguo") timer.performWithDelay(700, function() powerup(0); end) else print("counter=5") staging\_powerup[n]=rand[n] ready\_to\_randomize[n]=false timer.performWithDelay(700, function() powerup(0); end) end elseif used[n] and not ready\_to\_randomize[n] then print("A libero, B pieno") power\_button[n].alpha=0 rand[n] = staging\_powerup[n] if rand[n]==1 then power\_button[n]=display.newImageRect("powerups/powerup1.png", 30, 30 ) elseif rand[n]==2 then power\_button[n]=display.newImageRect("powerups/powerup2.png", 30, 30 ) elseif rand[n]==3 then power\_button[n]=display.newImageRect("powerups/powerup3.png", 30, 30 ) elseif rand[n]==4 then power\_button[n]=display.newImageRect("powerups/powerup4.png", 30, 30 ) elseif rand[n]==5 then power\_button[n]=display.newImageRect("powerups/powerup5.png", 30, 30 ) end power\_button[n].x = display.contentCenterX + 78 power\_button[n].y = display.contentCenterY-65 current[n]=rand[n] power\_button[n]:addEventListener("tap", powerup\_usage) used[n]=false ready\_to\_randomize[n]=true counter[n]=0 timer.performWithDelay(700, function() powerup(0); end) elseif not used[n] and not ready\_to\_randomize[n] then loading[n].alpha=1 print("A pieno, B pieno") timer.performWithDelay(700, function() powerup(0); end) end end --timer.performWithDelay(700, functio --timer.performWithDelay(700, powerup(1)) local function temp() powerup(0) end timer.performWithDelay( 700, function() powerup(0); end)

Managed to solve everything. Thank you very much!