Шукати в цьому блозі

Gaming / АПІ рекорди та досягнення

 

GAMING

ПЛАГІН

Опис:бібліотека GooglePlay Services
таблиця лідерів - leaderboards,
досягнення achievements,
хмара cloud saves (не працює)
і мультиплеер multiplayer. (працюють не всі функції)

Приклади:

Методи, евенти та властивості:


Методи

print_r (t)   -- друк таблиць  --  функція в кінці сторінки
  • Gaming.new(framework) 
    • -- ініціалізувати  framework
require "gaming" 
gaming=Gaming.new("googleplay") 
  • Gaming.login(param1, param2, ..., paramn) 
    • -- автентифікація користувача
if not gaming:isLoggedIn() then --якщо незалогінений
print("login")
gaming:login() --LOGIN_COMPLETE
end
  • Gaming.logout()
    •  -- розлогінити користувача
gaming:logout()
  • Gaming:showLeaderboard(id) -
    • -Показати вікно дошки лідерів (string leaderboard id)
gaming:showLeaderboard("CgkIwqXCmPkEEAIQAQ")  --показати топ
  • Gaming:showAchievements()
    •  --Показати вікно досягнень
gaming:showAchievements() --показати досягнення
  • Gaming:reportScore(id, score, immediate)
    •  --записати новий рекорд (string leaderboard Id, number score, bool immediate (true will usually provide events))
 відправити рекорд гравця.
gaming:reportScore("CgkIwqIQAQ", 13, true) 
 --REPORT_SCORE_COMPLETE,
  • Gaming:reportAchievement(id, steps, immediate)
  • --записати нове досягнення (string achievement Id, number steps - progress of achievement, bool immediate (true will usually provide events))
--, встановити кількість пройдених кроків досягнення
----REPORT_ACHIEVEMENT_COMPLETE,REPORT_ACHIEVEMENT_ERROR
gaming:reportAchievement("CgkIwqEEAIQAg",1,true) 
--,відкрити непокрокове досягнення
gaming:reportAchievement("CgkIwqXCmPkEEAIQAw")

  • Gaming:loadAchievements() 
    • --Завантажити досягнення, завершиться LOAD_ACHIEVEMENTS_COMPLETE або LOAD_ACHIEVEMENTS_ERROR
--скачати всі досягнення  //status(0-Gaming.UNLOCKED, 1-Gaming.REVEALED, 2-Gaming.HIDDEN)
gaming:loadAchievements() 

  • Gaming:loadScores(id)
    •  --завантажити рекорди по leaderboard Id, raises LOAD_SCORES_COMPLETE or LOAD_SCORES_ERROR
--loadScores(final String id, int timeSpan, int collection, int maxResults)  
--https://developers.google.com/games/services/web/api/scores/list 
gaming:loadScores("CgkIwqXCmPQAQ",gaming.ALL_TIME,gaming.ALL_PLAYERS,25)
  • ЦІ КОМАНДИ НЕ ПРАЦЮЮТЬ
  • Gaming:loadState(key) 
    • --numeric key, raised STATE_LOADED or STATE_ERROR
  • Gaming:updateState(key, data[, immediate])
    •  --update data, numeric key, can raise STATE_CONFLICT or STATE_ERROR
  • Gaming:deleteState(key)
    •  --delete data for numeric key, can raise STATE_DELETED or STATE_ERROR
  • Gaming:resolveState(key, version, data) 
    • --resolve state conflict for slot key with version and data, should be called if STATE_CONFLICT event was dispatched, may raise STATE_LOADED event for new resolved data

Додаткові методи

gaming:getPlayerInfo()    --PLAYER_INFORMATION_COMPLETE

gaming:incrementAchievement("ID покрокового досягнення",число скільки додати кроків,true)  
--REPORT_ACHIEVEMENT_COMPLETE,REPORT_ACHIEVEMENT_ERROR,  
gaming:incrementAchievement("CgkIwqXCAIQBQ",100,true) 

--Розкрити приховані досягнення
--REPORT_ACHIEVEMENT_COMPLETE, 
gaming:revealAchievement("CgkIwEEAIQAw") 

отримати Дані
  print(gaming:getPlayerId())   
  print(gaming:getPlayerName())  
  print(gaming:getPlayerPicture())  --content://com.google.android.gms.games.background/images/732bba7755
  print(gaming:isLoggedIn()) --true 

Події

  • Event.LOGIN_COMPLETE
gaming:addEventListener(Event.LOGIN_COMPLETE, function(e) --gaming:login()
my_PlayerName=gaming:getPlayerName()
print(my_PlayerName,"LOGIN_COMPLETE")
end)
  • Event.LOGIN_ERROR
    • e.error - error message
gaming:addEventListener(Event.LOGIN_ERROR, function(e)
print(my_PlayerName,"LOGIN_ERROR")
print_r(e)  
end)
  • Event.LOAD_ACHIEVEMENTS_COMPLETE
    • event.achievements
    • event.achievements[].id
    • event.achievements[].name
    • event.achievements[].description
    • event.achievements[].status
    • event.achievements[].currentSteps
    • event.achievements[].totalSteps
    • event.achievements[].lastUpdate
gaming:addEventListener(Event.LOAD_ACHIEVEMENTS_COMPLETE, function(e)  -- gaming:loadAchievements()
print(my_PlayerName,"LOAD_ACHIEVEMENTS_COMPLETE")
 print_r(e.achievements)  --id,description,currentSteps,status,lastUpdate,totalSteps,name
  
end)
  • Event.LOAD_ACHIEVEMENTS_ERROR
    • e.error - error message
gaming:addEventListener(Event.REPORT_ACHIEVEMENT_ERROR , function(e)  --gaming:incrementAchievement("CgkIwqEEAIQAg",1,true)
print(my_PlayerName,"REPORT_ACHIEVEMENT_ERROR ")
print("id",e.id)  
print("error",e.error)   --com.google.android.gms.common.api.ApiException: 26562: ACHIEVEMENT_NOT_INCREMENTAL
end)
  • Event.REPORT_ACHIEVEMENT_COMPLETE
    • e.id -- achievement id
gaming:addEventListener(Event.REPORT_ACHIEVEMENT_COMPLETE , function(e)
print(my_PlayerName,"REPORT_ACHIEVEMENT_COMPLETE ")
   print("id",e.id)
end)


  • Event.REPORT_ACHIEVEMENT_ERROR
    • e.id -- achievement id
    • e.error - error message
gaming:addEventListener(Event.LOAD_ACHIEVEMENTS_ERROR, function(e)
print(my_PlayerName,"LOAD_ACHIEVEMENTS_ERROR" )
  print_r(e)
end)
  • Event.LOAD_SCORES_COMPLETE
    • event.name -- leader board name
    • event.id -- leader board ID
    • event.scores
    • event.scores[].name
    • event.scores[].timestamp
    • event.scores[].score
    • event.scores[].rank
    • event.scores[].playerId
gaming:addEventListener(Event.LOAD_SCORES_COMPLETE, function(e)  -- gaming:loadScores("CgkIwEAIQAQ")
print(my_PlayerName,"LOAD_SCORES_COMPLETE")
print("name=",e.name)
print("id=  ",e.id)
print_r(e.scores)
end)


  • Event.LOAD_SCORES_ERROR
    • e.error - error message
    • e.id -- leader board ID
gaming:addEventListener(Event.LOAD_SCORES_ERROR, function(e) -- gaming:loadScores("CgkIwAIQAQ")
print(my_PlayerName,"LOAD_SCORES_ERROR")
--print_r(e)
--print("name=",e.name)
--print("id=  ",e.id)
--print_r(e.scores)
end)
  • Event.REPORT_SCORE_COMPLETE
    • e.id - leaderboard id
    • e.score -- score reported
gaming:addEventListener(Event.REPORT_SCORE_COMPLETE , function(e)  -- gaming:reportScore("CgAIQAQ", 12, true)
print(my_PlayerName,"REPORT_SCORE_COMPLETE ")
print("id=   ",e.id)
print("score=",e.score)     
end)
  • Event.REPORT_SCORE_ERROR
    • e.id - leaderboard id
    • e.score -- score reported
    • e.error -- error message
gaming:addEventListener(Event.REPORT_SCORE_ERROR , function(e)
print(my_PlayerName,"REPORT_SCORE_ERROR ")
print_r(e)      
end)
  • Додаткові події
gaming:addEventListener(Event.PLAYER_INFORMATION_COMPLETE, function(e)  -- gaming:getPlayerInfo()
print(my_PlayerName,"PLAYER_INFORMATION_COMPLETE")
print("picture",e.picture)  --content://com.google.android.gms.games.background/images/732b755
print("id",e.id) --g0849136037847
print("name",e.name) --
end)

gaming:addEventListener(Event.PLAYER_INFORMATION_ERROR, function(e)
print(my_PlayerName,"PLAYER_INFORMATION_ERROR")
  print_r(e)   
end)

gaming:addEventListener(Event.PLAYER_SCORE_COMPLETE, function(e)
print(my_PlayerName,"PLAYER_SCORE_COMPLETE")
  print_r(e)  
end)

gaming:addEventListener(Event.PLAYER_SCORE_ERROR, function(e)
print(my_PlayerName,"PLAYER_SCORE_ERROR")
print_r(e)   
end)

Події Хмари

  • Event.STATE_LOADED
    • event.key
    • event.data
  • Event.STATE_ERROR
    • event.key
  • Event.STATE_CONFLICT
    • event.key
    • event.version
    • event.localData
    • event.serverData
  • Event.STATE_DELETED
    • event.key

НАЛАШТУВАННЯ КОНСОЛІ ГУГЛ

консоль гугл>ігрові сервіси>додати нову гру
Запам'ятайте> айді номер гри 












може знадобитись увімкнути апі диска гугл : 
































введіть айді номер в налаштуваннях плагіна  GAMING
також в файлах :
C:\Program Files (x86)\Gideros\All Plugins\gaming\bin\Android\res\values\ids.xml
C:\Program Files (x86)\Gideros\All Plugins\gaming\source\Android\res\values\ids.xml
потрібно замінити app_id - на ваш

ІГРОВІ СЕРВІСИ ЗАПРАЦЮЮТЬ НЕ ОДРАЗУ, А ЧЕРЕЗ 24 ГОДИНИ ПІСЛЯ 
ДОДАВАННЯ В КОНСОЛІ ГУГЛ

ГРА ПОВИННА БУТИ ОПУБЛІКОВАНА ЯК АЛЬФА АБО ВИЩЕ



ФУНКЦІЯ

--ДРУК ТАБЛИЦЬ В КОНСОЛЬ  print_r (ТАБЛИЦЯ)
function print_r (t, indent, done)
  done = done or {}
  indent = indent or ''
  local nextIndent -- Storage for next indentation value
  for key, value in pairs (t) do
    if type (value) == "table" and not done [value] then
      nextIndent = nextIndent or
          (indent .. string.rep(' ',string.len(tostring (key))+2))
          -- Shortcut conditional allocation
      done [value] = true
      print (indent .. "[" .. tostring (key) .. "] => Table {");
      print  (nextIndent .. "{");
      print_r (value, nextIndent .. string.rep(' ',2), done)
      print  (nextIndent .. "}");
    else
      print  (indent .. "[" .. tostring (key) .. "] => " .. tostring (value).."")
    end
  end
end

2 коментарі: