Anyone can help me?
Here my code:
local composer = require( "composer" ) local scene = composer.newScene() -- ----------------------------------------------------------------------------------- -- Code outside of the scene event functions below will only be executed ONCE unless -- the scene is removed entirely (not recycled) via "composer.removeScene()" -- ----------------------------------------------------------------------------------- local function goToMenu() local options = { effect = "slideRight", time = 500 } composer.gotoScene( "menu", options) end -- Initialize variables local json = require( "json" ) local settings = {} local filePath = system.pathForFile( "fastFingerSettings100.json", system.DocumentsDirectory ) ---------------------Store Settings------------------------ local store local targetAppStore = system.getInfo( "targetAppStore" ) if ( "apple" == targetAppStore ) then -- iOS store = require( "store" ) elseif ( "google" == targetAppStore ) then -- Android store = require( "plugin.google.iap.v3" ) elseif ( "amazon" == targetAppStore ) then -- Amazon store = require( "plugin.amazon.iap" ) else print( "In-app purchases are not available for this platform." ) end local function transactionListener( event ) local transaction = event.transaction if ( transaction.isError ) then print( transaction.errorType ) print( transaction.errorString ) else -- No errors; proceed end end -- Initialize store store.init( transactionListener ) local productIdentifiers = { "5lives", "30lives", "100lives", "noAdsPlus100Lives", } local function productListener( event ) for i = 1,#event.products do print( event.products[i].productIdentifier ) end end -- Load store products; store must be properly initialized by this point! store.loadProducts( productIdentifiers, productListener ) local function transactionListener( event ) local transaction = event.transaction if ( transaction.isError ) then print( transaction.errorType ) print( transaction.errorString ) else -- No errors; proceed if ( transaction.state == "purchased" or transaction.state == "restored" ) then -- Handle a normal purchase or restored purchase here print( transaction.state ) print( transaction.productIdentifier ) print( transaction.date ) local storeAddLives = composer.getVariable("lives") table.remove(settings,3) table.insert( settings, 3, storeAddLives ) saveLives() elseif ( transaction.state == "cancelled" ) then -- Handle a cancelled transaction here elseif ( transaction.state == "failed" ) then -- Handle a failed transaction here end -- Tell the store that the transaction is complete -- If you're providing downloadable content, do not call this until the download has completed store.finishTransaction( transaction ) end end -- Initialize store store.init( transactionListener ) ---------------------------------------------------------- ---------------------Load lives------------------------ local function loadLives() local file = io.open( filePath, "r" ) if file then file:seek("set", 0) local contents = file:read( "\*l" ) io.close( file ) settings = json.decode( contents ) end if ( settings == nil or #settings == 0 ) then settings = { 0, 0 , 0,1} end end ---------------------------------------------------------- ---------------------\_Save Lives-------------------------- local function saveLives() for i = #settings, 5, -1 do table.remove( settings, i ) end local file = io.open( filePath, "w" ) if file then file:write( json.encode( settings ) ) io.close( file ) end end -- ----------------------------------------------------------------------------------- -- Scene event functions -- ----------------------------------------------------------------------------------- -- create() function scene:create( event ) local shopGroup = self.view -- Code here runs when the scene is first created but has not yet appeared on screen local setaBackward = display.newImage( "setaBackward.png") setaBackward.x = display.contentWidth\*0.15 setaBackward.y = display.contentHeight\*0+40 setaBackward:addEventListener("tap", goToMenu) logoText = display.newText( "Store", 150, 80, "FFFFORWA.TTF", 24 ) logoText.x = display.contentWidth\*0.5 logoText.y = display.contentHeight\*0+40 logoText:setFillColor( 1,0.843137,0 ) local hLine = display.newLine( -20, 0, display.contentWidth\*1, 0 ) hLine:setStrokeColor( 0.411765, 0.411765 ,0.411765 ) hLine.strokeWidth = 4 hLine.x = display.contentWidth\*0 hLine.y = logoText.y+30 product1Text = display.newText( "x5", 150, 80, "FFFFORWA.TTF", 15 ) product1Text.x = display.contentWidth\*0.35 product1Text.y = display.contentHeight\*0.25 product1TextH = display.newText( "♥", 150, 80, "FFFFORWA.TTF", 25 ) product1TextH.x = product1Text.x+25 product1TextH.y = product1Text.y-5 product1TextH:setFillColor( 1,0,0 ) product1TextP = display.newText( "0.99$", 150, 80, "FFFFORWA.TTF", 15 ) product1TextP.x = product1Text.x+100 product1TextP.y = product1Text.y product1TextP:setFillColor( 1,0.843137,0 ) local hLine1 = display.newLine( -20, 0, display.contentWidth\*1, 0 ) hLine1:setStrokeColor( 0.411765, 0.411765 ,0.411765 ) hLine1.strokeWidth = 2 hLine1.x = display.contentWidth\*0 hLine1.y = product1TextP.y+40 local product1Rectangle = display.newRect( 0, 0, display.contentWidth\*10, 60 ) product1Rectangle:setFillColor( 0.5 ) product1Rectangle.x = display.contentWidth\*0 product1Rectangle.y = product1Text.y product1Rectangle.alpha = 0.01 product1Rectangle.id = 1 --Product 2 product2Text = display.newText( "x30", 150, 80, "FFFFORWA.TTF", 15 ) product2Text.x = product1Text.x-10 product2Text.y = product1Text.y+80 product2TextH = display.newText( "♥", 150, 80, "FFFFORWA.TTF", 25 ) product2TextH.x = product1TextH.x product2TextH.y = product2Text.y-5 product2TextH:setFillColor( 1,0,0 ) product2TextP = display.newText( "2.99$", 150, 80, "FFFFORWA.TTF", 15 ) product2TextP.x = product1TextP.x product2TextP.y = product2Text.y product2TextP:setFillColor( 1,0.843137,0 ) local hLine2 = display.newLine( -20, 0, display.contentWidth\*1, 0 ) hLine2:setStrokeColor( 0.411765, 0.411765 ,0.411765 ) hLine2.strokeWidth = 2 hLine2.x = display.contentWidth\*0 hLine2.y = product2TextP.y+40 local product2Rectangle = display.newRect( 0, 0, display.contentWidth\*10, 60 ) product2Rectangle:setFillColor( 0.5 ) product2Rectangle.x = display.contentWidth\*0 product2Rectangle.y = product2Text.y product2Rectangle.alpha = 0.01 product2Rectangle.id = 2 --Product 3 product3Text = display.newText( "x100", 150, 80, "FFFFORWA.TTF", 15 ) product3Text.x = product1Text.x-10 product3Text.y = product1Text.y+160 product3TextH = display.newText( "♥", 150, 80, "FFFFORWA.TTF", 25 ) product3TextH.x = product1TextH.x product3TextH.y = product3Text.y-5 product3TextH:setFillColor( 1,0,0 ) product3TextP = display.newText( "5.99$", 150, 80, "FFFFORWA.TTF", 15 ) product3TextP.x = product1TextP.x product3TextP.y = product3Text.y product3TextP:setFillColor( 1,0.843137,0 ) local hLine3 = display.newLine( -20, 0, display.contentWidth\*1, 0 ) hLine3:setStrokeColor( 0.411765, 0.411765 ,0.411765 ) hLine3.strokeWidth = 2 hLine3.x = display.contentWidth\*0 hLine3.y = product3TextP.y+40 local product3Rectangle = display.newRect( 0, 0, display.contentWidth\*10, 60 ) product3Rectangle:setFillColor( 0.5 ) product3Rectangle.x = display.contentWidth\*0 product3Rectangle.y = product3Text.y product3Rectangle.alpha = 0.01 product3Rectangle.id = 3 --Product 4 --local product4 = display.newImage( "noAds.png") --product4.x = product1Text.x-80 --product4.y = product1Text.y+240 product4Text = display.newText( "x400", 150, 80, "FFFFORWA.TTF", 15 ) product4Text.x = product1Text.x-20 product4Text.y = product1Text.y+240 product4TextH = display.newText( "♥", 150, 80, "FFFFORWA.TTF", 25 ) product4TextH.x = product1TextH.x product4TextH.y = product4Text.y-5 product4TextH:setFillColor( 1,0,0 ) product4TextP = display.newText( "5.99$", 150, 80, "FFFFORWA.TTF", 15 ) product4TextP.x = product1TextP.x product4TextP.y = product4Text.y product4TextP:setFillColor( 1,0.843137,0 ) local hLine4 = display.newLine( -20, 0, display.contentWidth\*1, 0 ) hLine4:setStrokeColor( 0.411765, 0.411765 ,0.411765 ) hLine4.strokeWidth = 2 hLine4.x = display.contentWidth\*0 hLine4.y = product4TextP.y+40 local product4Rectangle = display.newRect( 0, 0, display.contentWidth\*10, 60 ) product4Rectangle:setFillColor( 0.5 ) product4Rectangle.x = display.contentWidth\*0 product4Rectangle.y = product4Text.y product4Rectangle.alpha = 0.01 product4Rectangle.id = 4 function apertou(event) print("Apertou "..event.target.id) loadLives() local totalLives = settings[3] print(totalLives) local updateLives print(totalLives) if(event.target.id==1) then updateLives = totalLives + 5 local i = 1 store.purchase( {"event.products[1].productIdentifier"}) elseif(event.target.id==2) then updateLives = totalLives + 30 store.purchase( {"event.products[2].productIdentifier"}) elseif(event.target.id==3) then updateLives = totalLives + 100 store.purchase( {"event.products[3].productIdentifier"}) elseif(event.target.id==4) then updateLives = totalLives + 400 store.purchase( {"event.products[4].productIdentifier"}) end composer.setVariable("lives",updateLives) end product1Rectangle:addEventListener("tap", apertou) product2Rectangle:addEventListener("tap", apertou) product3Rectangle:addEventListener("tap", apertou) product4Rectangle:addEventListener("tap", apertou) shopGroup:insert(logoText) shopGroup:insert(setaBackward) shopGroup:insert(hLine) --shopGroup:insert(product4) shopGroup:insert(product1Text) shopGroup:insert(product1TextH) shopGroup:insert(product1TextP) shopGroup:insert(hLine1) shopGroup:insert(product1Rectangle) shopGroup:insert(product2Text) shopGroup:insert(product2TextH) shopGroup:insert(product2TextP) shopGroup:insert(hLine2) shopGroup:insert(product2Rectangle) shopGroup:insert(product3Text) shopGroup:insert(product3TextH) shopGroup:insert(product3TextP) shopGroup:insert(hLine3) shopGroup:insert(product3Rectangle) shopGroup:insert(product4Text) shopGroup:insert(product4TextH) shopGroup:insert(product4TextP) shopGroup:insert(hLine4) shopGroup:insert(product4Rectangle) end -- show() function scene:show( event ) local shopGroup = self.view local phase = event.phase if ( phase == "will" ) then -- Code here runs when the scene is still off screen (but is about to come on screen) elseif ( phase == "did" ) then -- Code here runs when the scene is entirely on screen end end -- hide() function scene:hide( event ) local shopGroup = self.view local phase = event.phase if ( phase == "will" ) then -- Code here runs when the scene is on screen (but is about to go off screen) elseif ( phase == "did" ) then -- Code here runs immediately after the scene goes entirely off screen end end -- destroy() function scene:destroy( event ) local shopGroup = self.view -- Code here runs prior to the removal of scene's view end -- ----------------------------------------------------------------------------------- -- Scene event function listeners -- ----------------------------------------------------------------------------------- scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) -- ----------------------------------------------------------------------------------- return scene