Hi, I’ve been hardly trying to get gamecenter integrated into my iOS app, but it’s been weeks and I haven’t succeeded yet, I need help, it’s important and I have to release the app before it’s too late :\
What I want is a gamecenter button on the main screen that when the user clicks on it, a leaderboard table shows containing scores ( fully functioning ), but that seems very hard to me now :\ I just don’t get it right.
Here’s a piece of the code (game.lua):
local function displayScores(event) -- Display the player's score and high score gameOverScoreLabel = display.newText({parent=gameGroup, text="" .. score, font="Arial", fontSize=17, width=200, align="center"}) gameOverHighScoreLabel = display.newText({parent=gameGroup, text="" .. highscore, font="Arial", fontSize=17, width=200, align="center"}) gameOverScoreLabel.x = \_W / 2 + 50 gameOverScoreLabel.y = \_H / 2 - 23 gameOverScoreLabel:setFillColor(0, 0, 0) gameOverHighScoreLabel.x = \_W / 2 + 50 gameOverHighScoreLabel.y = \_H / 2 + 53 gameOverHighScoreLabel:setFillColor(0, 0, 0) -- Achievements if loggedIntoGC then if score \>= bronzeMedalScore then gameNetwork.request( "unlockAchievement", { achievement = { identifier=achievements["BronzeMedal"], showsCompletionBanner=true, } }); elseif score \>= silverMedalScore then gameNetwork.request( "unlockAchievement", { achievement = { identifier=achievements["SilverMedal"], showsCompletionBanner=true, } }); elseif score \>= goldMedalScore then gameNetwork.request( "unlockAchievement", { achievement = { identifier=achievements["GoldMedal"], showsCompletionBanner=true, } }); elseif score \>= platinumMedalScore then gameNetwork.request( "unlockAchievement", { achievement = { identifier=achievements["PlatinumMedal"], showCompletionBanner=true, } }); elseif score \>= rainbowMedalScore then gameNetwork.request ( "unlockAchievement", { achievement = { identifier=achievements["RainbowMedal"], showCompletionBanner=true, } }); elseif score \>= chuckMedalScore then gameNetowork.request ( "unlockAchievement", { achievement = { identifier=achievements["ChuckMedal"], showCompletionBanner=true, } }); end end -- Add a touch event to the try again button tryAgainButton:addEventListener("touch", tryAgain) gameCenterButton:addEventListener("touch", gameCenter) end timer.cancel(wallTimer) -- Update the highscore if score \> highscore then highscoreFile = io.open(system.pathForFile("highscore", system.DocumentsDirectory), "w") highscore = score highscoreFile:write("" .. score) highscoreFile:close() highscoreFile = nil end end elseif event.phase == "ended" and not isGameOver then if event.other.isSensor then score = score + 1 if score \> highscore then scoreLabel.text = "" .. score .. "!" else scoreLabel.text = "" .. score end playSound("score") end end end local function showLeaderboards( event ) if ( system.getInfo("platformName") == "Android" ) then gameNetwork.show( "leaderboards" ) else gameNetwork.show( "leaderboards", { leaderboard={ category="myLeadeboardID", timeScope="AllTime" } } ); end return true end local scoreSubmit = function ( event ) gameNetwork.request("setHighScore", { localPlayerScore = { category = "myLeaderboardID", value = highscore } }) end local function showAchievements( event ) gameNetwork.show( "achievements" ) return true end gameCenter = function( event ) local t = event.target if event.phase == "began" then display.getCurrentStage():setFocus( t ) t.isFocus = true t.y = t.y + 3 t.alpha = 0.8 elseif t.isFocus then if event.phase == "ended" then display.getCurrentStage():setFocus( nil ) t.isFocus = false t.alpha = 1 t.y = t.y - 3 local b = t.contentBounds if event.x \>= b.xMin and event.x \<= b.xMax and event.y \>= b.yMin and event.y \<= b.yMax then playSound("select") scoreSubmit(); showLeaderboards(); end end end end highscoreFile = io.open(system.pathForFile("highscore", system.DocumentsDirectory), "r") highscore = tonumber(highscoreFile:read("\*a")) highscoreFile:close() highscoreFile = nil Runtime:addEventListener("touch", screenTouched) Runtime:addEventListener("enterFrame", gameTick) end