Advertisement
10xyz

CODE

Sep 27th, 2023
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var game_API_key = "dev_blablabla This is my code"
  2. var development_mode = true
  3. var leaderboard_key = "leaderboardKey"
  4. var session_token = ""
  5. var score = 0
  6.  
  7. # HTTP Request node can only handle one call per node
  8. var auth_http = HTTPRequest.new()
  9. var leaderboard_http = HTTPRequest.new()
  10. var submit_score_http = HTTPRequest.new()
  11. var set_name_http = HTTPRequest.new()
  12. var get_name_http = HTTPRequest.new()
  13.  
  14.  
  15. func _authentication_request():
  16.     # Check if a player session has been saved
  17.     var player_session_exists = false
  18.     var file = File.new()
  19.     file.open("user://LootLocker.data", File.READ)
  20.     var player_identifier = file.get_as_text()
  21.     file.close()
  22.     if(player_identifier.length() > 1):
  23.         player_session_exists = true
  24.        
  25.     ## Convert data to json string:
  26.     var data = { "game_key": game_API_key, "game_version": "0.0.0.1", "development_mode": true }
  27.    
  28.     # If a player session already exists, send with the player identifier
  29.     if(player_session_exists == true):
  30.         data = { "game_key": game_API_key, "player_identifier":player_identifier, "game_version": "0.0.0.1", "development_mode": true }
  31.    
  32.     # Add 'Content-Type' header:
  33.     var headers = ["Content-Type: application/json"]
  34.    
  35.     # Create a HTTPRequest node for authentication
  36.     auth_http = HTTPRequest.new()
  37.     add_child(auth_http)
  38.     auth_http.connect("request_completed", self, "_on_authentication_request_completed")
  39.     # Send request
  40.     auth_http.request("https://api.lootlocker.io/game/v2/session/guest", headers, true, HTTPClient.METHOD_POST, to_json(data))
  41.     # Print what we're sending, for debugging purposes:
  42.     print(data)
  43.  
  44.  
  45. func _on_authentication_request_completed(result, response_code, headers, body):
  46.     var json = JSON.parse(body.get_string_from_utf8())
  47.     # Save player_identifier to file
  48.     var file = File.new()
  49.     file.open("user://LootLocker.data", File.WRITE)
  50.     print(json.result)
  51.     file.store_string(json.result.player_identifier)
  52.     file.close()
  53.    
  54.     # Save session_token to memory
  55.     session_token = json.result.session_token
  56.    
  57.     # Print server response
  58.     print(json.result)
  59.    
  60.     # Clear node
  61.     auth_http.queue_free()
  62.     # Get leaderboards
  63.     #_get_leaderboards()
  64.     _change_player_name(global.playerName)
  65.  
  66.  
  67. func _get_leaderboards():
  68.     print("Getting leaderboards")
  69.     var url = "https://api.lootlocker.io/game/leaderboards/"+leaderboard_key+"/list?count=10"
  70.     var headers = ["Content-Type: application/json", "x-session-token:"+session_token]
  71.    
  72.     # Create a request node for getting the highscore
  73.     leaderboard_http = HTTPRequest.new()
  74.     add_child(leaderboard_http)
  75.     leaderboard_http.connect("request_completed", self, "_on_leaderboard_request_completed")
  76.     # Send request
  77.     leaderboard_http.request(url, headers, true, HTTPClient.METHOD_GET, "")
  78.  
  79.  
  80. func _on_leaderboard_request_completed(result, response_code, headers, body):
  81.     var json = JSON.parse(body.get_string_from_utf8())
  82.    
  83.     # Print data
  84.     print(json.result)
  85.    
  86.     # Formatting as a leaderboard
  87.     var leaderboardFormatted = ""
  88.     for n in json.result.items.size():
  89.         leaderboardFormatted += str(json.result.items[n].rank)+str(". ")
  90.         leaderboardFormatted += str(json.result.items[n].player.id)+str(" - ")
  91.         leaderboardFormatted += str(json.result.items[n].score)+str("\n")
  92.    
  93.     # Print the formatted leaderboard to the console
  94.     print(leaderboardFormatted)
  95.    
  96.     # Clear node
  97.     leaderboard_http.queue_free()
  98.  
  99.  
  100. func _upload_score(var score):
  101.     var data = { "score": str(score) }
  102.     var headers = ["Content-Type: application/json", "x-session-token:"+session_token]
  103.     submit_score_http = HTTPRequest.new()
  104.     add_child(submit_score_http)
  105.     submit_score_http.connect("request_completed", self, "_on_upload_score_request_completed")
  106.     # Send request
  107.     submit_score_http.request("https://api.lootlocker.io/game/leaderboards/"+leaderboard_key+"/submit", headers, true, HTTPClient.METHOD_POST, to_json(data))
  108.     # Print what we're sending, for debugging purposes:
  109.     print(data)
  110.  
  111. func _change_player_name(name):
  112.     print("Changing player name")
  113.    
  114.     # use this variable for setting the name of the player
  115.     var player_name = String(name)
  116.    
  117.     var data = { "name": str(player_name) }
  118.     var url =  "https://api.lootlocker.io/game/player/name"
  119.     var headers = ["Content-Type: application/json", "x-session-token:"+session_token]
  120.    
  121.     # Create a request node for getting the highscore
  122.     set_name_http = HTTPRequest.new()
  123.     add_child(set_name_http)
  124.     set_name_http.connect("request_completed", self, "_on_player_set_name_request_completed")
  125.     # Send request
  126.     set_name_http.request(url, headers, true, HTTPClient.METHOD_PATCH, to_json(data))
  127.    
  128. func _on_player_set_name_request_completed(result, response_code, headers, body):
  129.     var json = JSON.parse(body.get_string_from_utf8())
  130.    
  131.     # Print data
  132.     print(json.result)
  133.     set_name_http.queue_free()
  134.  
  135. func _get_player_name():
  136.     print("Getting player name")
  137.     var url = "https://api.lootlocker.io/game/player/name"
  138.     var headers = ["Content-Type: application/json", "x-session-token:"+session_token]
  139.    
  140.     # Create a request node for getting the highscore
  141.     get_name_http = HTTPRequest.new()
  142.     add_child(get_name_http)
  143.     get_name_http.connect("request_completed", self, "_on_player_get_name_request_completed")
  144.     # Send request
  145.     get_name_http.request(url, headers, true, HTTPClient.METHOD_GET, "")
  146.    
  147. func _on_player_get_name_request_completed(result, response_code, headers, body):
  148.     var json = JSON.parse(body.get_string_from_utf8())
  149.    
  150.     # Print data
  151.     print(json.result)
  152.     # Print player name
  153.     print(json.result.name)
  154.  
  155. func _on_upload_score_request_completed(result, response_code, headers, body) :
  156.     var json = JSON.parse(body.get_string_from_utf8())
  157.    
  158.     # Print data
  159.     print(json.result)
  160.    
  161.     # Clear node
  162.     submit_score_http.queue_free()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement