mirror of
https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server.git
synced 2026-08-15 13:04:30 +00:00
Ballistica-web integration.
This commit is contained in:
parent
61c4fdd780
commit
39a544bf03
3 changed files with 184 additions and 867 deletions
143
dist/ba_root/mods/bcs_plugin.py
vendored
Normal file
143
dist/ba_root/mods/bcs_plugin.py
vendored
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# coding: utf-8
|
||||
|
||||
# ba_meta require api 6
|
||||
from typing import Optional, Any, Dict, List, Type, Sequence
|
||||
from ba._gameactivity import GameActivity
|
||||
import ba,_ba
|
||||
import psutil as p
|
||||
import json
|
||||
import os
|
||||
import _thread
|
||||
# from stats import mystats
|
||||
os.environ['FLASK_APP'] = 'bombsquadflaskapi.py'
|
||||
os.environ['FLASK_ENV'] = 'development'
|
||||
from stats import mystats
|
||||
|
||||
stats={}
|
||||
leaderboard={}
|
||||
top200={}
|
||||
|
||||
class BsDataThread(object):
|
||||
def __init__(self):
|
||||
self.Timer = ba.Timer( 8,ba.Call(self.refreshStats),timetype = ba.TimeType.REAL,repeat = True)
|
||||
self.Timerr = ba.Timer( 10,ba.Call(self.startThread),timetype = ba.TimeType.REAL,repeat = True)
|
||||
|
||||
def startThread(self):
|
||||
_thread.start_new_thread(self.refreshLeaderboard,())
|
||||
|
||||
def refreshLeaderboard(self):
|
||||
global leaderboard
|
||||
global top200
|
||||
_t200={}
|
||||
|
||||
lboard=mystats.get_all_stats()
|
||||
leaderboard=lboard
|
||||
entries = [(a['scores'], a['kills'], a['deaths'], a['games'], a['name'], a['aid']) for a in lboard.values()]
|
||||
|
||||
entries.sort(reverse=True)
|
||||
rank=0
|
||||
for entry in entries:
|
||||
rank+=1
|
||||
if rank >201:
|
||||
break
|
||||
_t200[entry[5]]={"rank":rank,"scores":int(entry[0]),"games":int(entry[3]),"kills":int(entry[1]),"deaths":int(entry[2]),"name_html":entry[4],"last_seen":"entry[6]"}
|
||||
top200=_t200
|
||||
|
||||
def refreshStats(self):
|
||||
|
||||
liveplayers={}
|
||||
nextMap=''
|
||||
currentMap=''
|
||||
global stats
|
||||
for i in _ba.get_game_roster():
|
||||
|
||||
|
||||
try:
|
||||
liveplayers[i['account_id']]={'name':i['players'][0]['name_full'],'client_id':i['client_id'],'device_id':i['display_string']}
|
||||
except:
|
||||
liveplayers[i['account_id']]={'name':"<in-lobby>",'clientid':i['client_id'],'device_id':i['display_string']}
|
||||
try:
|
||||
nextMap=_ba.get_foreground_host_session().get_next_game_description().evaluate()
|
||||
|
||||
current_game_spec=_ba.get_foreground_host_session()._current_game_spec
|
||||
gametype: Type[GameActivity] =current_game_spec['resolved_type']
|
||||
|
||||
currentMap=gametype.get_settings_display_string(current_game_spec).evaluate()
|
||||
except:
|
||||
pass
|
||||
minigame={'current':currentMap,'next':nextMap}
|
||||
system={'cpu':p.cpu_percent(),'ram':p.virtual_memory().percent}
|
||||
#system={'cpu':80,'ram':34}
|
||||
stats['system']=system
|
||||
stats['roster']=liveplayers
|
||||
stats['chats']=_ba.get_chat_messages()
|
||||
stats['playlist']=minigame
|
||||
stats['teamInfo']=self.getTeamInfo()
|
||||
|
||||
#print(self.getTeamInfo());
|
||||
|
||||
def getTeamInfo(self):
|
||||
data={}
|
||||
|
||||
session=_ba.get_foreground_host_session()
|
||||
data['sessionType']=type(session).__name__
|
||||
teams=session.sessionteams
|
||||
for team in teams:
|
||||
data[team.id]={'name':team.name.evaluate(),
|
||||
'color':list(team.color),
|
||||
'score':team.customdata['score'],
|
||||
'players':[]
|
||||
}
|
||||
for player in team.players:
|
||||
teamplayer={'name':player.getname(),
|
||||
'device_id':player.inputdevice.get_account_name(True),
|
||||
'inGame':player.in_game,
|
||||
'character':player.character,
|
||||
'account_id':player.get_account_id()
|
||||
}
|
||||
data[team.id]['players'].append(teamplayer)
|
||||
|
||||
return data
|
||||
|
||||
|
||||
|
||||
BsDataThread()
|
||||
|
||||
|
||||
|
||||
import flask
|
||||
from flask import request, jsonify
|
||||
|
||||
app = flask.Flask(__name__)
|
||||
app.config["DEBUG"] = False
|
||||
|
||||
|
||||
@app.route('/', methods=['GET'])
|
||||
def home():
|
||||
return '''Nothing here :)'''
|
||||
|
||||
|
||||
# A route to return all of the available entries in our catalog.
|
||||
@app.route('/getStats', methods=['GET'])
|
||||
def api_all():
|
||||
return json.dumps(stats)
|
||||
|
||||
@app.route('/getLeaderboard',methods=['GET'])
|
||||
def get_l():
|
||||
return json.dumps(leaderboard)
|
||||
|
||||
@app.route('/getTop200',methods=['GET'])
|
||||
def get_top200():
|
||||
return json.dumps(top200)
|
||||
|
||||
|
||||
# ba_meta export plugin
|
||||
class InitalRun(ba.Plugin):
|
||||
def __init__(self):
|
||||
print("start flask")
|
||||
flask_run = _thread.start_new_thread(app.run, ("0.0.0.0",80,False ))
|
||||
|
||||
|
||||
# SAMPLE OUTPUT
|
||||
# {'system': {'cpu': 80, 'ram': 34}, 'roster': {}, 'chats': [], 'playlist': {'current': 'Meteor Shower @ Rampage', 'next': 'Assault @ Step Right Up'}, 'teamInfo': {'sessionType': 'DualTeamSession', 0: {'name': 'Blue', 'color': (0.1, 0.25, 1.0), 'score': 1, 'players': [{'name': 'Jolly', 'device_id': '\ue030PC295588', 'inGame': True, 'character': 'xmas', 'account_id': 'pb-IF4TVWwZUQ=='}]}, 1: {'name': 'Red', 'color': (1.0, 0.25, 0.2), 'score': 0, 'players': []}}}
|
||||
43
dist/ba_root/mods/stats/mystats.py
vendored
43
dist/ba_root/mods/stats/mystats.py
vendored
|
|
@ -69,7 +69,7 @@ def get_all_stats():
|
|||
global seasonStartDate
|
||||
if os.path.exists(statsfile):
|
||||
renameFile=False
|
||||
with open(statsfile, 'r') as f:
|
||||
with open(statsfile, 'r',encoding='utf8') as f:
|
||||
jsonData=json.loads(f.read())
|
||||
try:
|
||||
stats=jsonData["stats"]
|
||||
|
|
@ -80,7 +80,8 @@ def get_all_stats():
|
|||
seasonStartDate=datetime.datetime.now()
|
||||
return statsDefault
|
||||
return stats
|
||||
except:
|
||||
except OSError as e:
|
||||
print(e)
|
||||
return jsonData
|
||||
else:
|
||||
return {}
|
||||
|
|
@ -96,8 +97,8 @@ def dump_stats(s: dict):
|
|||
seasonStartDate=datetime.datetime.now()
|
||||
s={"startDate":seasonStartDate.strftime("%d-%m-%Y") , "stats":s}
|
||||
if os.path.exists(statsfile):
|
||||
with open(statsfile, 'w') as f:
|
||||
f.write(json.dumps(s, indent=4))
|
||||
with open(statsfile, 'w',encoding='utf8') as f:
|
||||
f.write(json.dumps(s, indent=4,ensure_ascii=False))
|
||||
f.close()
|
||||
else: print('Stats file not found!')
|
||||
|
||||
|
|
@ -198,6 +199,7 @@ def update(score_set):
|
|||
store.
|
||||
"""
|
||||
# look at score-set entries to tally per-account kills for this round
|
||||
|
||||
|
||||
account_kills = {}
|
||||
account_deaths = {}
|
||||
|
|
@ -230,7 +232,7 @@ class UpdateThread(threading.Thread):
|
|||
|
||||
def run(self):
|
||||
# pull our existing stats from disk
|
||||
|
||||
import datetime
|
||||
try:
|
||||
stats=get_all_stats()
|
||||
except:
|
||||
|
|
@ -244,14 +246,11 @@ class UpdateThread(threading.Thread):
|
|||
# (we only do this when first creating the entry to save time,
|
||||
# though it may be smart to refresh it periodically since
|
||||
# it may change)
|
||||
'''url = 'http://bombsquadgame.com/accountquery?id=' + account_id
|
||||
response = json.loads(
|
||||
urllib.request.urlopen(urllib.Request(url)).read())
|
||||
print('response variable from mystats.py line 183:')
|
||||
print(response)
|
||||
name_html = response['name_html']'''
|
||||
|
||||
|
||||
|
||||
stats[account_id] = {'rank': 0,
|
||||
'name': "default",
|
||||
'name': "deafult name",
|
||||
'scores': 0,
|
||||
'total_damage': 0,
|
||||
'kills': 0,
|
||||
|
|
@ -259,17 +258,29 @@ class UpdateThread(threading.Thread):
|
|||
'games': 0,
|
||||
'kd': 0,
|
||||
'avg_score': 0,
|
||||
'last_seen':str(datetime.datetime.now()),
|
||||
'aid': str(account_id)}
|
||||
|
||||
#Temporary codes to change 'name_html' to 'name'
|
||||
if 'name_html' in stats[account_id]:
|
||||
stats[account_id].pop('name_html')
|
||||
stats[account_id]['name'] = 'default'
|
||||
|
||||
# if 'name_html' in stats[account_id]:
|
||||
# stats[account_id].pop('name_html')
|
||||
# stats[account_id]['name'] = 'default'
|
||||
url="http://bombsquadgame.com/bsAccountInfo?buildNumber=20258&accountID="+account_id
|
||||
data=urllib.request.urlopen(url)
|
||||
if data is not None:
|
||||
try:
|
||||
name=json.loads(data.read())["profileDisplayString"]
|
||||
except ValueError:
|
||||
stats[account_id]['name']= "???"
|
||||
else:
|
||||
stats[account_id]['name']= name
|
||||
|
||||
# now increment their kills whether they were already there or not
|
||||
|
||||
stats[account_id]['kills'] += kill_count
|
||||
stats[account_id]['deaths'] += self.account_deaths[account_id]
|
||||
stats[account_id]['scores'] += self.account_scores[account_id]
|
||||
stats[account_id]['last_seen'] = str(datetime.datetime.now())
|
||||
# also incrementing the games played and adding the id
|
||||
stats[account_id]['games'] += 1
|
||||
stats[account_id]['aid'] = str(account_id)
|
||||
|
|
|
|||
865
dist/ba_root/mods/stats/stats.json
vendored
865
dist/ba_root/mods/stats/stats.json
vendored
|
|
@ -1,854 +1,17 @@
|
|||
{
|
||||
"pb-IF4VAk4a": {
|
||||
"rank": 65,
|
||||
"name": "pb-IF4VAk4a",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 18,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4VAk4a"
|
||||
},
|
||||
"pb-IF4TVWwZUQ==": {
|
||||
"rank": 5,
|
||||
"name": "\ue030PC295588",
|
||||
"scores": 610,
|
||||
"total_damage": 0.0,
|
||||
"kills": 1,
|
||||
"deaths": 73,
|
||||
"games": 55,
|
||||
"kd": 0.013,
|
||||
"avg_score": 11.09,
|
||||
"aid": "pb-IF4TVWwZUQ=="
|
||||
},
|
||||
"pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE": {
|
||||
"rank": 11,
|
||||
"name": "\ue020HeySmoothy",
|
||||
"scores": 342,
|
||||
"total_damage": 0.0,
|
||||
"kills": 12,
|
||||
"deaths": 42,
|
||||
"games": 14,
|
||||
"kd": 0.285,
|
||||
"avg_score": 24.428,
|
||||
"aid": "pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE"
|
||||
},
|
||||
"pb-IF4uVW8bMw==": {
|
||||
"rank": 10,
|
||||
"name": "\ue020BurnedMedusa35646",
|
||||
"scores": 396,
|
||||
"total_damage": 0.0,
|
||||
"kills": 31,
|
||||
"deaths": 22,
|
||||
"games": 6,
|
||||
"kd": 1.409,
|
||||
"avg_score": 66.0,
|
||||
"aid": "pb-IF4uVW8bMw=="
|
||||
},
|
||||
"pb-IF4eVUooAw==": {
|
||||
"rank": 24,
|
||||
"name": "\ue030Android51971883",
|
||||
"scores": 159,
|
||||
"total_damage": 0.0,
|
||||
"kills": 15,
|
||||
"deaths": 21,
|
||||
"games": 6,
|
||||
"kd": 0.714,
|
||||
"avg_score": 26.5,
|
||||
"aid": "pb-IF4eVUooAw=="
|
||||
},
|
||||
"pb-IF4iVUc5Cg==": {
|
||||
"rank": 3,
|
||||
"name": "\ue020PicturesquePond10",
|
||||
"scores": 851,
|
||||
"total_damage": 0.0,
|
||||
"kills": 51,
|
||||
"deaths": 56,
|
||||
"games": 10,
|
||||
"kd": 0.91,
|
||||
"avg_score": 85.1,
|
||||
"aid": "pb-IF4iVUc5Cg=="
|
||||
},
|
||||
"pb-IF4rV0MoFA==": {
|
||||
"rank": 17,
|
||||
"name": "\ue030Android31875021",
|
||||
"scores": 188,
|
||||
"total_damage": 0.0,
|
||||
"kills": 12,
|
||||
"deaths": 14,
|
||||
"games": 3,
|
||||
"kd": 0.857,
|
||||
"avg_score": 62.666,
|
||||
"aid": "pb-IF4rV0MoFA=="
|
||||
},
|
||||
"pb-IF43VU0aVQ==": {
|
||||
"rank": 14,
|
||||
"name": "\ue020HARSHALgaming8992",
|
||||
"scores": 253,
|
||||
"total_damage": 0.0,
|
||||
"kills": 12,
|
||||
"deaths": 50,
|
||||
"games": 6,
|
||||
"kd": 0.24,
|
||||
"avg_score": 42.166,
|
||||
"aid": "pb-IF43VU0aVQ=="
|
||||
},
|
||||
"pb-IF4LVU0KKQ==": {
|
||||
"rank": 9,
|
||||
"name": "\ue020SHAMANT1111",
|
||||
"scores": 434,
|
||||
"total_damage": 0.0,
|
||||
"kills": 28,
|
||||
"deaths": 54,
|
||||
"games": 6,
|
||||
"kd": 0.518,
|
||||
"avg_score": 72.333,
|
||||
"aid": "pb-IF4LVU0KKQ=="
|
||||
},
|
||||
"pb-IF4VVUgJVw==": {
|
||||
"rank": 20,
|
||||
"name": "\ue020WobblyLining33",
|
||||
"scores": 182,
|
||||
"total_damage": 0.0,
|
||||
"kills": 10,
|
||||
"deaths": 27,
|
||||
"games": 4,
|
||||
"kd": 0.37,
|
||||
"avg_score": 45.5,
|
||||
"aid": "pb-IF4VVUgJVw=="
|
||||
},
|
||||
"pb-IF4gVU0BCg==": {
|
||||
"rank": 53,
|
||||
"name": "\ue020Dewanggaming",
|
||||
"scores": 43,
|
||||
"total_damage": 0.0,
|
||||
"kills": 3,
|
||||
"deaths": 9,
|
||||
"games": 3,
|
||||
"kd": 0.333,
|
||||
"avg_score": 14.333,
|
||||
"aid": "pb-IF4gVU0BCg=="
|
||||
},
|
||||
"pb-IF4FVXkZDQ==": {
|
||||
"rank": 27,
|
||||
"name": "\ue020lllBOLTlll",
|
||||
"scores": 151,
|
||||
"total_damage": 0.0,
|
||||
"kills": 9,
|
||||
"deaths": 15,
|
||||
"games": 3,
|
||||
"kd": 0.6,
|
||||
"avg_score": 50.333,
|
||||
"aid": "pb-IF4FVXkZDQ=="
|
||||
},
|
||||
"pb-IF42VUpaDg==": {
|
||||
"rank": 7,
|
||||
"name": "\ue020EasterlyArtillery29",
|
||||
"scores": 468,
|
||||
"total_damage": 0.0,
|
||||
"kills": 25,
|
||||
"deaths": 37,
|
||||
"games": 4,
|
||||
"kd": 0.675,
|
||||
"avg_score": 117.0,
|
||||
"aid": "pb-IF42VUpaDg=="
|
||||
},
|
||||
"pb-IF4iVUNSIw==": {
|
||||
"rank": 48,
|
||||
"name": "default",
|
||||
"scores": 56,
|
||||
"total_damage": 0.0,
|
||||
"kills": 2,
|
||||
"deaths": 5,
|
||||
"games": 1,
|
||||
"kd": 0.4,
|
||||
"avg_score": 56.0,
|
||||
"aid": "pb-IF4iVUNSIw=="
|
||||
},
|
||||
"pb-IF4PVGcSJw==": {
|
||||
"rank": 42,
|
||||
"name": "\ue030Android29104233",
|
||||
"scores": 84,
|
||||
"total_damage": 0.0,
|
||||
"kills": 7,
|
||||
"deaths": 9,
|
||||
"games": 2,
|
||||
"kd": 0.777,
|
||||
"avg_score": 42.0,
|
||||
"aid": "pb-IF4PVGcSJw=="
|
||||
},
|
||||
"pb-IF4eVVMkMw==": {
|
||||
"rank": 30,
|
||||
"name": "\ue030Android52887552",
|
||||
"scores": 101,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 18,
|
||||
"games": 6,
|
||||
"kd": 0.0,
|
||||
"avg_score": 16.833,
|
||||
"aid": "pb-IF4eVVMkMw=="
|
||||
},
|
||||
"pb-IF4vNnMJ": {
|
||||
"rank": 4,
|
||||
"name": "\ue020XXRGEXX2",
|
||||
"scores": 674,
|
||||
"total_damage": 0.0,
|
||||
"kills": 25,
|
||||
"deaths": 15,
|
||||
"games": 10,
|
||||
"kd": 1.666,
|
||||
"avg_score": 67.4,
|
||||
"aid": "pb-IF4vNnMJ"
|
||||
},
|
||||
"pb-IF4qV3c8Hw==": {
|
||||
"rank": 63,
|
||||
"name": "\ue020kankeisan1284578554",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 1,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4qV3c8Hw=="
|
||||
},
|
||||
"pb-IF4mVHFcLQ==": {
|
||||
"rank": 23,
|
||||
"name": "\ue030Android39744744",
|
||||
"scores": 174,
|
||||
"total_damage": 0.0,
|
||||
"kills": 9,
|
||||
"deaths": 14,
|
||||
"games": 5,
|
||||
"kd": 0.642,
|
||||
"avg_score": 34.8,
|
||||
"aid": "pb-IF4mVHFcLQ=="
|
||||
},
|
||||
"pb-IF4PVVIeHw==": {
|
||||
"rank": 69,
|
||||
"name": "\ue020VoraceMan",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4PVVIeHw=="
|
||||
},
|
||||
"pb-IF4AVXAmPA==": {
|
||||
"rank": 50,
|
||||
"name": "\ue020ESZ\u4e5bOptimusOp\u4e44",
|
||||
"scores": 56,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 28.0,
|
||||
"aid": "pb-IF4AVXAmPA=="
|
||||
},
|
||||
"pb-IF4AVVEPNw==": {
|
||||
"rank": 31,
|
||||
"name": "\ue020StealthyFelicity14",
|
||||
"scores": 96,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 2,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 96.0,
|
||||
"aid": "pb-IF4AVVEPNw=="
|
||||
},
|
||||
"pb-IF4SVU4MFw==": {
|
||||
"rank": 66,
|
||||
"name": "\ue020K\u211da\u03c4o\u0eae",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4SVU4MFw=="
|
||||
},
|
||||
"pb-IF4DVEkPEg==": {
|
||||
"rank": 16,
|
||||
"name": "\ue020StormyCliff19",
|
||||
"scores": 192,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 7,
|
||||
"games": 3,
|
||||
"kd": 0.0,
|
||||
"avg_score": 64.0,
|
||||
"aid": "pb-IF4DVEkPEg=="
|
||||
},
|
||||
"pb-IF4TVVNeMg==": {
|
||||
"rank": 46,
|
||||
"name": "\ue030Android52880740",
|
||||
"scores": 61,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 1,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 30.5,
|
||||
"aid": "pb-IF4TVVNeMg=="
|
||||
},
|
||||
"pb-IF4yVUcgBg==": {
|
||||
"rank": 15,
|
||||
"name": "\ue020RagedRibik28",
|
||||
"scores": 225,
|
||||
"total_damage": 0.0,
|
||||
"kills": 1,
|
||||
"deaths": 5,
|
||||
"games": 4,
|
||||
"kd": 0.2,
|
||||
"avg_score": 56.25,
|
||||
"aid": "pb-IF4yVUcgBg=="
|
||||
},
|
||||
"pb-IF4IVUUJMg==": {
|
||||
"rank": 40,
|
||||
"name": "\ue030Android51464300",
|
||||
"scores": 90,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 45.0,
|
||||
"aid": "pb-IF4IVUUJMg=="
|
||||
},
|
||||
"pb-IF4tVUwGVA==": {
|
||||
"rank": 19,
|
||||
"name": "\ue030Android52246284",
|
||||
"scores": 183,
|
||||
"total_damage": 0.0,
|
||||
"kills": 9,
|
||||
"deaths": 13,
|
||||
"games": 3,
|
||||
"kd": 0.692,
|
||||
"avg_score": 61.0,
|
||||
"aid": "pb-IF4tVUwGVA=="
|
||||
},
|
||||
"pb-IF48NmQO": {
|
||||
"rank": 59,
|
||||
"name": "default",
|
||||
"scores": 6,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 1,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 6.0,
|
||||
"aid": "pb-IF48NmQO"
|
||||
},
|
||||
"pb-IF4UVUQaAw==": {
|
||||
"rank": 41,
|
||||
"name": "\ue020LikelyTour25",
|
||||
"scores": 85,
|
||||
"total_damage": 0.0,
|
||||
"kills": 11,
|
||||
"deaths": 8,
|
||||
"games": 2,
|
||||
"kd": 1.375,
|
||||
"avg_score": 42.5,
|
||||
"aid": "pb-IF4UVUQaAw=="
|
||||
},
|
||||
"pb-IF4wVRECLg==": {
|
||||
"rank": 62,
|
||||
"name": "\ue020gogugu",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 1,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4wVRECLg=="
|
||||
},
|
||||
"pb-JiNJARBcV0FDXV1DGU5ZXV1FEUFWRVJC": {
|
||||
"rank": 68,
|
||||
"name": "\ue020appyfizz510",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-JiNJARBcV0FDXV1DGU5ZXV1FEUFWRVJC"
|
||||
},
|
||||
"pb-IF4OVVMsDQ==": {
|
||||
"rank": 49,
|
||||
"name": "\ue030Android52893090",
|
||||
"scores": 56,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 28.0,
|
||||
"aid": "pb-IF4OVVMsDQ=="
|
||||
},
|
||||
"pb-IF5VVU4aFg==": {
|
||||
"rank": 71,
|
||||
"name": "default",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF5VVU4aFg=="
|
||||
},
|
||||
"pb-IF4SVW9dEg==": {
|
||||
"rank": 51,
|
||||
"name": "\ue020PROFFESOR9",
|
||||
"scores": 48,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 1,
|
||||
"games": 5,
|
||||
"kd": 0.0,
|
||||
"avg_score": 9.6,
|
||||
"aid": "pb-IF4SVW9dEg=="
|
||||
},
|
||||
"pb-IF4SVVMtDg==": {
|
||||
"rank": 38,
|
||||
"name": "\ue020OrtigozaRafa2000",
|
||||
"scores": 92,
|
||||
"total_damage": 0.0,
|
||||
"kills": 4,
|
||||
"deaths": 14,
|
||||
"games": 4,
|
||||
"kd": 0.285,
|
||||
"avg_score": 23.0,
|
||||
"aid": "pb-IF4SVVMtDg=="
|
||||
},
|
||||
"pb-IF4cVVMhKg==": {
|
||||
"rank": 29,
|
||||
"name": "\ue020jonyteoba100",
|
||||
"scores": 106,
|
||||
"total_damage": 0.0,
|
||||
"kills": 2,
|
||||
"deaths": 13,
|
||||
"games": 4,
|
||||
"kd": 0.153,
|
||||
"avg_score": 26.5,
|
||||
"aid": "pb-IF4cVVMhKg=="
|
||||
},
|
||||
"pb-IF4gVRlbXQ==": {
|
||||
"rank": 12,
|
||||
"name": "\ue020MyopicTour17",
|
||||
"scores": 295,
|
||||
"total_damage": 0.0,
|
||||
"kills": 5,
|
||||
"deaths": 5,
|
||||
"games": 4,
|
||||
"kd": 1.0,
|
||||
"avg_score": 73.75,
|
||||
"aid": "pb-IF4gVRlbXQ=="
|
||||
},
|
||||
"pb-IF4dVVAMUg==": {
|
||||
"rank": 39,
|
||||
"name": "\ue030Android52657984",
|
||||
"scores": 91,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 45.5,
|
||||
"aid": "pb-IF4dVVAMUg=="
|
||||
},
|
||||
"pb-JiNJVxFfUEFDWFtCFEdXVl1FF0FaTllC": {
|
||||
"rank": 58,
|
||||
"name": "default",
|
||||
"scores": 10,
|
||||
"total_damage": 0.0,
|
||||
"kills": 1,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 10.0,
|
||||
"aid": "pb-JiNJVxFfUEFDWFtCFEdXVl1FF0FaTllC"
|
||||
},
|
||||
"pb-IF40VU4TAQ==": {
|
||||
"rank": 36,
|
||||
"name": "default",
|
||||
"scores": 96,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 96.0,
|
||||
"aid": "pb-IF40VU4TAQ=="
|
||||
},
|
||||
"pb-IF5QVVUkLw==": {
|
||||
"rank": 13,
|
||||
"name": "\ue030Android52849403",
|
||||
"scores": 258,
|
||||
"total_damage": 0.0,
|
||||
"kills": 7,
|
||||
"deaths": 23,
|
||||
"games": 5,
|
||||
"kd": 0.304,
|
||||
"avg_score": 51.6,
|
||||
"aid": "pb-IF5QVVUkLw=="
|
||||
},
|
||||
"pb-IF5RVUkZKg==": {
|
||||
"rank": 57,
|
||||
"name": "\ue020ThreateningOddball34",
|
||||
"scores": 16,
|
||||
"total_damage": 0.0,
|
||||
"kills": 1,
|
||||
"deaths": 11,
|
||||
"games": 2,
|
||||
"kd": 0.09,
|
||||
"avg_score": 8.0,
|
||||
"aid": "pb-IF5RVUkZKg=="
|
||||
},
|
||||
"pb-IF5VVVEnVQ==": {
|
||||
"rank": 47,
|
||||
"name": "\ue030Android52446817",
|
||||
"scores": 59,
|
||||
"total_damage": 0.0,
|
||||
"kills": 2,
|
||||
"deaths": 7,
|
||||
"games": 2,
|
||||
"kd": 0.285,
|
||||
"avg_score": 29.5,
|
||||
"aid": "pb-IF5VVVEnVQ=="
|
||||
},
|
||||
"pb-JiNJARBaVUpHWl1BGUBVVFZAEkZeR1FE": {
|
||||
"rank": 33,
|
||||
"name": "\ue020CreepyJourney52261",
|
||||
"scores": 96,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 96.0,
|
||||
"aid": "pb-JiNJARBaVUpHWl1BGUBVVFZAEkZeR1FE"
|
||||
},
|
||||
"pb-IF5QVVZTAA==": {
|
||||
"rank": 45,
|
||||
"name": "default",
|
||||
"scores": 64,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 64.0,
|
||||
"aid": "pb-IF5QVVZTAA=="
|
||||
},
|
||||
"pb-IF5dVU0tPw==": {
|
||||
"rank": 37,
|
||||
"name": "\ue030Android52110513",
|
||||
"scores": 93,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 4,
|
||||
"games": 2,
|
||||
"kd": 0.0,
|
||||
"avg_score": 46.5,
|
||||
"aid": "pb-IF5dVU0tPw=="
|
||||
},
|
||||
"pb-IF4PVUovCQ==": {
|
||||
"rank": 55,
|
||||
"name": "\ue020Phriedbean",
|
||||
"scores": 20,
|
||||
"total_damage": 0.0,
|
||||
"kills": 2,
|
||||
"deaths": 1,
|
||||
"games": 2,
|
||||
"kd": 2.0,
|
||||
"avg_score": 10.0,
|
||||
"aid": "pb-IF4PVUovCQ=="
|
||||
},
|
||||
"pb-IF4sVRU8IA==": {
|
||||
"rank": 61,
|
||||
"name": "\ue02099\u30e1KAMY",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 5,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4sVRU8IA=="
|
||||
},
|
||||
"pb-IF4zVUYjPA==": {
|
||||
"rank": 26,
|
||||
"name": "\ue030Android51693156",
|
||||
"scores": 152,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 3,
|
||||
"kd": 0.0,
|
||||
"avg_score": 50.666,
|
||||
"aid": "pb-IF4zVUYjPA=="
|
||||
},
|
||||
"pb-IF4PVVJSNg==": {
|
||||
"rank": 35,
|
||||
"name": "default",
|
||||
"scores": 96,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 96.0,
|
||||
"aid": "pb-IF4PVVJSNg=="
|
||||
},
|
||||
"pb-IF4qVVMuIA==": {
|
||||
"rank": 32,
|
||||
"name": "\ue020TacitAnthropology26",
|
||||
"scores": 96,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 96.0,
|
||||
"aid": "pb-IF4qVVMuIA=="
|
||||
},
|
||||
"pb-IF4nVVFaEA==": {
|
||||
"rank": 22,
|
||||
"name": "\ue020023alan",
|
||||
"scores": 178,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 6,
|
||||
"games": 4,
|
||||
"kd": 0.0,
|
||||
"avg_score": 44.5,
|
||||
"aid": "pb-IF4nVVFaEA=="
|
||||
},
|
||||
"pb-IF4-VWItPA==": {
|
||||
"rank": 60,
|
||||
"name": "default",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 6,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4-VWItPA=="
|
||||
},
|
||||
"pb-IF5VVxI5Fg==": {
|
||||
"rank": 44,
|
||||
"name": "\ue020JinaYumnam1234",
|
||||
"scores": 76,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 76.0,
|
||||
"aid": "pb-IF5VVxI5Fg=="
|
||||
},
|
||||
"pb-IF4lVUskVg==": {
|
||||
"rank": 67,
|
||||
"name": "\ue030Android52111807",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4lVUskVg=="
|
||||
},
|
||||
"pb-IF4vVVAiKw==": {
|
||||
"rank": 34,
|
||||
"name": "default",
|
||||
"scores": 96,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 96.0,
|
||||
"aid": "pb-IF4vVVAiKw=="
|
||||
},
|
||||
"pb-IF5RVU0vKg==": {
|
||||
"rank": 6,
|
||||
"name": "\ue020noobgamingyt2468",
|
||||
"scores": 476,
|
||||
"total_damage": 0.0,
|
||||
"kills": 36,
|
||||
"deaths": 93,
|
||||
"games": 17,
|
||||
"kd": 0.387,
|
||||
"avg_score": 28.0,
|
||||
"aid": "pb-IF5RVU0vKg=="
|
||||
},
|
||||
"pb-IF4JVWseCg==": {
|
||||
"rank": 43,
|
||||
"name": "\ue020CapillaryJaguar7",
|
||||
"scores": 77,
|
||||
"total_damage": 0.0,
|
||||
"kills": 7,
|
||||
"deaths": 10,
|
||||
"games": 3,
|
||||
"kd": 0.7,
|
||||
"avg_score": 25.666,
|
||||
"aid": "pb-IF4JVWseCg=="
|
||||
},
|
||||
"pb-IF4HVVAkEg==": {
|
||||
"rank": 21,
|
||||
"name": "\ue020GlobalDoorway16",
|
||||
"scores": 178,
|
||||
"total_damage": 0.0,
|
||||
"kills": 3,
|
||||
"deaths": 4,
|
||||
"games": 3,
|
||||
"kd": 0.75,
|
||||
"avg_score": 59.333,
|
||||
"aid": "pb-IF4HVVAkEg=="
|
||||
},
|
||||
"pb-JiNJARFTUUBCXFhJE0NUVFdCEERbT1dK": {
|
||||
"rank": 56,
|
||||
"name": "\ue020snehil7701",
|
||||
"scores": 20,
|
||||
"total_damage": 0.0,
|
||||
"kills": 2,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 20.0,
|
||||
"aid": "pb-JiNJARFTUUBCXFhJE0NUVFdCEERbT1dK"
|
||||
},
|
||||
"pb-IF43VUwlAg==": {
|
||||
"rank": 2,
|
||||
"name": "\ue020EmperialX987",
|
||||
"scores": 1021,
|
||||
"total_damage": 0.0,
|
||||
"kills": 34,
|
||||
"deaths": 33,
|
||||
"games": 11,
|
||||
"kd": 1.03,
|
||||
"avg_score": 92.818,
|
||||
"aid": "pb-IF43VUwlAg=="
|
||||
},
|
||||
"pb-IF4uVUwsVQ==": {
|
||||
"rank": 70,
|
||||
"name": "\ue020VindictivePick10",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4uVUwsVQ=="
|
||||
},
|
||||
"pb-IF4NVVNZMw==": {
|
||||
"rank": 18,
|
||||
"name": "\ue030Android52956999",
|
||||
"scores": 186,
|
||||
"total_damage": 0.0,
|
||||
"kills": 8,
|
||||
"deaths": 30,
|
||||
"games": 7,
|
||||
"kd": 0.266,
|
||||
"avg_score": 26.571,
|
||||
"aid": "pb-IF4NVVNZMw=="
|
||||
},
|
||||
"pb-IF40VVMMPA==": {
|
||||
"rank": 64,
|
||||
"name": "\ue020SAM1133g1",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 1,
|
||||
"games": 1,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF40VVMMPA=="
|
||||
},
|
||||
"pb-IF4vKWgc": {
|
||||
"rank": 8,
|
||||
"name": "\ue020MechanizedHydra59524",
|
||||
"scores": 452,
|
||||
"total_damage": 0.0,
|
||||
"kills": 16,
|
||||
"deaths": 9,
|
||||
"games": 3,
|
||||
"kd": 1.777,
|
||||
"avg_score": 150.666,
|
||||
"aid": "pb-IF4vKWgc"
|
||||
},
|
||||
"pb-IF5cVEMNNA==": {
|
||||
"rank": 25,
|
||||
"name": "\ue020KDevil2512",
|
||||
"scores": 153,
|
||||
"total_damage": 0.0,
|
||||
"kills": 5,
|
||||
"deaths": 16,
|
||||
"games": 3,
|
||||
"kd": 0.312,
|
||||
"avg_score": 51.0,
|
||||
"aid": "pb-IF5cVEMNNA=="
|
||||
},
|
||||
"pb-IF4PVEEnBA==": {
|
||||
"rank": 28,
|
||||
"name": "\ue020Deadly\u30c4TusKeR",
|
||||
"scores": 128,
|
||||
"total_damage": 0.0,
|
||||
"kills": 3,
|
||||
"deaths": 14,
|
||||
"games": 3,
|
||||
"kd": 0.214,
|
||||
"avg_score": 42.666,
|
||||
"aid": "pb-IF4PVEEnBA=="
|
||||
},
|
||||
"pb-IF4RVVMDVQ==": {
|
||||
"rank": 54,
|
||||
"name": "\ue030Android52942930",
|
||||
"scores": 37,
|
||||
"total_damage": 0.0,
|
||||
"kills": 1,
|
||||
"deaths": 5,
|
||||
"games": 1,
|
||||
"kd": 0.2,
|
||||
"avg_score": 37.0,
|
||||
"aid": "pb-IF4RVVMDVQ=="
|
||||
},
|
||||
"pb-IF43VVJSAg==": {
|
||||
"rank": 52,
|
||||
"name": "\ue020RANDOMGOD2011",
|
||||
"scores": 44,
|
||||
"total_damage": 0.0,
|
||||
"kills": 3,
|
||||
"deaths": 4,
|
||||
"games": 2,
|
||||
"kd": 0.75,
|
||||
"avg_score": 22.0,
|
||||
"aid": "pb-IF43VVJSAg=="
|
||||
},
|
||||
"pb-IF5XUm9eAg==": {
|
||||
"rank": 1,
|
||||
"name": "\ue030PC402015",
|
||||
"scores": 2167,
|
||||
"total_damage": 0.0,
|
||||
"kills": 8,
|
||||
"deaths": 193,
|
||||
"games": 136,
|
||||
"kd": 0.041,
|
||||
"avg_score": 15.933,
|
||||
"aid": "pb-IF5XUm9eAg=="
|
||||
"startDate": "26-02-2022",
|
||||
"stats": {
|
||||
"pb-IF4VAk4a": {
|
||||
"rank": 1,
|
||||
"name": "pb-IF4VAk4a",
|
||||
"scores": 0,
|
||||
"total_damage": 0.0,
|
||||
"kills": 0,
|
||||
"deaths": 0,
|
||||
"games": 18,
|
||||
"kd": 0.0,
|
||||
"avg_score": 0.0,
|
||||
"aid": "pb-IF4VAk4a"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue