示例#1
0
def userStats(userID):
	# Get userID's token from tokens list
	userToken = glob.tokens.getTokenFromUserID(userID)

	# Get stats from DB
	# TODO: Caching system
	rankedScore = 	userHelper.getUserRankedScore(userID, userToken.gameMode)
	accuracy = 		userHelper.getUserAccuracy(userID, userToken.gameMode)/100
	playcount = 	userHelper.getUserPlaycount(userID, userToken.gameMode)
	totalScore = 	userHelper.getUserTotalScore(userID, userToken.gameMode)
	gameRank = 		userHelper.getUserGameRank(userID, userToken.gameMode)
	pp = 0

	return packetHelper.buildPacket(packetIDs.server_userStats,
	[
		[userID, 				dataTypes.uInt32],
		[userToken.actionID, 	dataTypes.byte],
		[userToken.actionText, 	dataTypes.string],
		[userToken.actionMd5, 	dataTypes.string],
		[userToken.actionMods,	dataTypes.sInt32],
		[userToken.gameMode, 	dataTypes.byte],
		[0, 					dataTypes.sInt32],
		[rankedScore, 			dataTypes.uInt64],
		[accuracy, 				dataTypes.ffloat],
		[playcount, 			dataTypes.uInt32],
		[totalScore, 			dataTypes.uInt64],
		[gameRank,	 			dataTypes.uInt32],
		[pp, 					dataTypes.uInt16]
	])
示例#2
0
def userSupporterGMT(supporter, GMT):
	result = 1
	if supporter == True:
		result += 4
	if GMT == True:
		result += 2
	return packetHelper.buildPacket(packetIDs.server_supporterGMT, [[result, dataTypes.uInt32]])
示例#3
0
def userStats(userID):
	# Get userID's token from tokens list
	userToken = glob.tokens.getTokenFromUserID(userID)

	# Get stats from DB
	# TODO: Caching system
	rankedScore = 	userHelper.getRankedScore(userID, userToken.gameMode)
	accuracy = 		userHelper.getAccuracy(userID, userToken.gameMode)/100
	playcount = 	userHelper.getPlaycount(userID, userToken.gameMode)
	totalScore = 	userHelper.getTotalScore(userID, userToken.gameMode)
	gameRank = 		userHelper.getGameRank(userID, userToken.gameMode)
	pp = 			int(userHelper.getPP(userID, userToken.gameMode))

	return packetHelper.buildPacket(packetIDs.server_userStats,
	[
		[userID, 				dataTypes.uInt32],
		[userToken.actionID, 	dataTypes.byte],
		[userToken.actionText, 	dataTypes.string],
		[userToken.actionMd5, 	dataTypes.string],
		[userToken.actionMods,	dataTypes.sInt32],
		[userToken.gameMode, 	dataTypes.byte],
		[0, 					dataTypes.sInt32],
		[rankedScore, 			dataTypes.uInt64],
		[accuracy, 				dataTypes.ffloat],
		[playcount, 			dataTypes.uInt32],
		[totalScore, 			dataTypes.uInt64],
		[gameRank,	 			dataTypes.uInt32],
		[pp, 					dataTypes.uInt16]
	])
示例#4
0
def userSupporterGMT(supporter, GMT):
	result = 1
	if (supporter == True):
		result += 4
	if (GMT == True):
		result += 2
	return packetHelper.buildPacket(packetIDs.server_supporterGMT, [[result, dataTypes.uInt32]])
示例#5
0
def userPanel(userID):
    # Get user data
    userToken = glob.tokens.getTokenFromUserID(userID)
    username = userHelper.getUserUsername(userID)
    timezone = 24  # TODO: Timezone
    country = userToken.getCountry()
    gameRank = userHelper.getUserGameRank(userID, userToken.gameMode)
    latitude = userToken.getLatitude()
    longitude = userToken.getLongitude()

    # Get username color according to rank
    # Only admins and normal users are currently supported
    rank = userHelper.getUserRank(userID)
    if (username == "FokaBot"):
        userRank = userRanks.MOD
    elif (rank == 4):
        userRank = userRanks.ADMIN
    elif (rank == 3):
        userRank = userRank.MOD
    elif (rank == 2):
        userRank = userRanks.SUPPORTER
    else:
        userRank = userRanks.NORMAL

    return packetHelper.buildPacket(
        packetIDs.server_userPanel,
        [[userID, dataTypes.sInt32], [username, dataTypes.string],
         [timezone, dataTypes.byte], [country, dataTypes.byte],
         [userRank, dataTypes.byte], [longitude, dataTypes.ffloat],
         [latitude, dataTypes.ffloat], [gameRank, dataTypes.uInt32]])
示例#6
0
def userPanel(userID):
	# Get user data
	userToken = glob.tokens.getTokenFromUserID(userID)
	username = userHelper.getUserUsername(userID)
	timezone = 24	# TODO: Timezone
	country = userToken.getCountry()
	gameRank = userHelper.getUserGameRank(userID, userToken.gameMode)
	latitude = userToken.getLatitude()
	longitude = userToken.getLongitude()

	# Get username color according to rank
	# Only admins and normal users are currently supported
	rank = userHelper.getUserRank(userID)
	if (username == "FokaBot"):
		usernameColor = usernameColors.mod
	elif (rank == 4):
		usernameColor = usernameColors.admin
	else:
		usernameColor = usernameColors.normal


	return packetHelper.buildPacket(packetIDs.server_userPanel,
	[
		[userID, dataTypes.sInt32],
		[username, dataTypes.string],
		[timezone, dataTypes.byte],
		[country, dataTypes.byte],
		[usernameColor, dataTypes.byte],
		[longitude, dataTypes.ffloat],
		[latitude, dataTypes.ffloat],
		[gameRank, dataTypes.uInt32]
	])
示例#7
0
def matchStart(matchID):
	# Make sure the match exists
	if matchID not in glob.matches.matches:
		return None

	# Get match binary data and build packet
	match = glob.matches.matches[matchID]
	return packetHelper.buildPacket(packetIDs.server_matchStart, match.getMatchData())
示例#8
0
def matchStart(matchID):
	# Make sure the match exists
	if matchID not in glob.matches.matches:
		return None

	# Get match binary data and build packet
	match = glob.matches.matches[matchID]
	return packetHelper.buildPacket(packetIDs.server_matchStart, match.getMatchData())
示例#9
0
def matchJoinSuccess(matchID):
	# Make sure the match exists
	if matchID not in glob.matches.matches:
		return None

	# Get match binary data and build packet
	match = glob.matches.matches[matchID]
	data = packetHelper.buildPacket(packetIDs.server_matchJoinSuccess, match.getMatchData())
	return data
示例#10
0
def updateMatch(matchID):
    # Make sure the match exists
    if (matchID not in glob.matches.matches):
        return None

    # Get match binary data and build packet
    match = glob.matches.matches[matchID]
    return packetHelper.buildPacket(packetIDs.server_updateMatch,
                                    match.getMatchData())
示例#11
0
def matchJoinSuccess(matchID):
	# Make sure the match exists
	if matchID not in glob.matches.matches:
		return None

	# Get match binary data and build packet
	match = glob.matches.matches[matchID]
	data = packetHelper.buildPacket(packetIDs.server_matchJoinSuccess, match.getMatchData())
	return data
示例#12
0
def onlineUsers():
	onlineUsersData = []

	users = glob.tokens.tokens;

	# Users number
	onlineUsersData.append([len(users), dataTypes.uInt16])

	# Add all users user IDs to onlineUsersData
	for key,value in users.items():
		onlineUsersData.append([value.userID, dataTypes.sInt32])

	return packetHelper.buildPacket(packetIDs.server_userPresenceBundle, onlineUsersData)
示例#13
0
def onlineUsers():
	onlineUsersData = []

	users = glob.tokens.tokens

	# Users number
	onlineUsersData.append([len(users), dataTypes.uInt16])

	# Add all users user IDs to onlineUsersData
	for _,value in users.items():
		onlineUsersData.append([value.userID, dataTypes.sInt32])

	return packetHelper.buildPacket(packetIDs.server_userPresenceBundle, onlineUsersData)
示例#14
0
def friendList(userID):
	friendsData = []

	# Get friend IDs from db
	friends = userHelper.getFriendList(userID)

	# Friends number
	friendsData.append([len(friends), dataTypes.uInt16])

	# Add all friend user IDs to friendsData
	for i in friends:
		friendsData.append([i, dataTypes.sInt32])

	return packetHelper.buildPacket(packetIDs.server_friendsList, friendsData)
示例#15
0
def friendList(userID):
    friendsData = []

    # Get friend IDs from db
    friends = userHelper.getFriendList(userID)

    # Friends number
    friendsData.append([len(friends), dataTypes.uInt16])

    # Add all friend user IDs to friendsData
    for i in friends:
        friendsData.append([i, dataTypes.sInt32])

    return packetHelper.buildPacket(packetIDs.server_friendsList, friendsData)
示例#16
0
def userPanel(userID):
	# Get user data
	userToken = glob.tokens.getTokenFromUserID(userID)
	username = userHelper.getUsername(userID)
	timezone = 24	# TODO: Timezone
	country = userToken.getCountry()
	gameRank = userHelper.getGameRank(userID, userToken.gameMode)
	latitude = userToken.getLatitude()
	longitude = userToken.getLongitude()

	# Get username color according to rank
	# Only admins and normal users are currently supported
	rank = userHelper.getRankPrivileges(userID)
	if username == "FokaBot":
		userRank = userRanks.MOD
	elif rank == 4:
		userRank = userRanks.ADMIN
	elif rank == 3:
		userRank = userRank.MOD
	elif rank == 2:
		userRank = userRanks.SUPPORTER
	else:
		userRank = userRanks.NORMAL


	return packetHelper.buildPacket(packetIDs.server_userPanel,
	[
		[userID, dataTypes.sInt32],
		[username, dataTypes.string],
		[timezone, dataTypes.byte],
		[country, dataTypes.byte],
		[userRank, dataTypes.byte],
		[longitude, dataTypes.ffloat],
		[latitude, dataTypes.ffloat],
		[gameRank, dataTypes.uInt32]
	])
示例#17
0
def loginBanned():
	return packetHelper.buildPacket(packetIDs.server_userID, [[-3, dataTypes.sInt32]])
示例#18
0
def noSongSpectator(userID):
	return packetHelper.buildPacket(packetIDs.server_spectatorCantSpectate, [[userID, dataTypes.sInt32]])
示例#19
0
def jumpscare(message):
	return packetHelper.buildPacket(packetIDs.server_jumpscare, [[message, dataTypes.string]])
示例#20
0
def channelInfoEnd():
	return packetHelper.buildPacket(packetIDs.server_channelInfoEnd, [[0, dataTypes.uInt32]])
示例#21
0
def removeSpectator(userID):
	return packetHelper.buildPacket(packetIDs.server_spectatorLeft, [[userID, dataTypes.sInt32]])
示例#22
0
def silenceEndTime(seconds):
	return packetHelper.buildPacket(packetIDs.server_silenceEnd, [[seconds, dataTypes.uInt32]])
示例#23
0
def allPlayersSkipped():
    return packetHelper.buildPacket(packetIDs.server_matchSkip)
示例#24
0
def jumpscare(message):
    return packetHelper.buildPacket(packetIDs.server_jumpscare,
                                    [[message, dataTypes.string]])
示例#25
0
def banchoRestart(msUntilReconnection):
    return packetHelper.buildPacket(packetIDs.server_restart,
                                    [[msUntilReconnection, dataTypes.uInt32]])
示例#26
0
def matchTransferHost():
    return packetHelper.buildPacket(packetIDs.server_matchTransferHost)
示例#27
0
def notification(message):
    return packetHelper.buildPacket(packetIDs.server_notification,
                                    [[message, dataTypes.string]])
示例#28
0
def playerFailed(slotID):
    return packetHelper.buildPacket(packetIDs.server_matchPlayerFailed,
                                    [[slotID, dataTypes.uInt32]])
示例#29
0
def matchComplete():
    return packetHelper.buildPacket(packetIDs.server_matchComplete)
示例#30
0
def matchFrames(slotID, data):
    return packetHelper.buildPacket(
        packetIDs.server_matchScoreUpdate,
        [[data[7:11], dataTypes.bbytes], [slotID, dataTypes.byte],
         [data[12:], dataTypes.bbytes]])
示例#31
0
def packet80():
	return packetHelper.buildPacket(packetIDs.server_topBotnet)
示例#32
0
def needSupporter():
    return packetHelper.buildPacket(packetIDs.server_userID,
                                    [[-6, dataTypes.sInt32]])
示例#33
0
def needSupporter():
	return packetHelper.buildPacket(packetIDs.server_userID, [[-6, dataTypes.sInt32]])
示例#34
0
def getAttention():
    return packetHelper.buildPacket(packetIDs.server_getAttention)
示例#35
0
def mainMenuIcon(icon):
	return packetHelper.buildPacket(packetIDs.server_mainMenuIcon, [[icon, dataTypes.string]])
示例#36
0
def packet80():
    return packetHelper.buildPacket(packetIDs.server_topBotnet)
示例#37
0
def forceUpdate():
	return packetHelper.buildPacket(packetIDs.server_userID, [[-2, dataTypes.sInt32]])
示例#38
0
def userID(uid):
    return packetHelper.buildPacket(packetIDs.server_userID,
                                    [[uid, dataTypes.sInt32]])
示例#39
0
def addSpectator(userID):
	return packetHelper.buildPacket(packetIDs.server_spectatorJoined, [[userID, dataTypes.sInt32]])
示例#40
0
def silenceEndTime(seconds):
    return packetHelper.buildPacket(packetIDs.server_silenceEnd,
                                    [[seconds, dataTypes.uInt32]])
示例#41
0
def spectatorFrames(data):
	return packetHelper.buildPacket(packetIDs.server_spectateFrames, [[data, dataTypes.bbytes]])
示例#42
0
def disposeMatch(matchID):
    return packetHelper.buildPacket(packetIDs.server_disposeMatch,
                                    [[matchID, dataTypes.uInt16]])
示例#43
0
def notification(message):
	return packetHelper.buildPacket(packetIDs.server_notification, [[message, dataTypes.string]])
示例#44
0
def mainMenuIcon(icon):
    return packetHelper.buildPacket(packetIDs.server_mainMenuIcon,
                                    [[icon, dataTypes.string]])
示例#45
0
def banchoRestart(msUntilReconnection):
	return packetHelper.buildPacket(packetIDs.server_restart, [[msUntilReconnection, dataTypes.uInt32]])
示例#46
0
def loginError():
    return packetHelper.buildPacket(packetIDs.server_userID,
                                    [[-5, dataTypes.sInt32]])
示例#47
0
def getAttention():
	return packetHelper.buildPacket(packetIDs.server_getAttention)
示例#48
0
def userLogout(userID):
	return packetHelper.buildPacket(packetIDs.server_userLogout, [[userID, dataTypes.sInt32], [0, dataTypes.byte]])
示例#49
0
def loginError():
	return packetHelper.buildPacket(packetIDs.server_userID, [[-5, dataTypes.sInt32]])
示例#50
0
def allPlayersLoaded():
    return packetHelper.buildPacket(packetIDs.server_matchAllPlayersLoaded)
示例#51
0
def userID(uid):
	return packetHelper.buildPacket(packetIDs.server_userID, [[uid, dataTypes.sInt32]])
示例#52
0
def changeMatchPassword(newPassword):
    return packetHelper.buildPacket(packetIDs.server_matchChangePassword,
                                    [[newPassword, dataTypes.string]])
示例#53
0
def protocolVersion(version = 19):
	return packetHelper.buildPacket(packetIDs.server_protocolVersion, [[version, dataTypes.uInt32]])
示例#54
0
def channelInfo(chan):
	channel = glob.channels.channels[chan]
	return packetHelper.buildPacket(packetIDs.server_channelInfo, [[chan, dataTypes.string], [channel.description, dataTypes.string], [channel.getConnectedUsersCount(), dataTypes.uInt16]])
示例#55
0
def loginBanned():
    return packetHelper.buildPacket(packetIDs.server_userID,
                                    [[-3, dataTypes.sInt32]])
示例#56
0
def playerSkipped(userID):
    return packetHelper.buildPacket(packetIDs.server_matchPlayerSkipped,
                                    [[userID, dataTypes.sInt32]])
示例#57
0
def channelJoinSuccess(userID, chan):
	return packetHelper.buildPacket(packetIDs.server_channelJoinSuccess, [[chan, dataTypes.string]])
示例#58
0
def matchJoinFail():
    return packetHelper.buildPacket(packetIDs.server_matchJoinFail)
示例#59
0
def protocolVersion(version=19):
    return packetHelper.buildPacket(packetIDs.server_protocolVersion,
                                    [[version, dataTypes.uInt32]])
示例#60
0
def sendMessage(fro, to, message):
	return packetHelper.buildPacket(packetIDs.server_sendMessage, [[fro, dataTypes.string], [message, dataTypes.string], [to, dataTypes.string], [userHelper.getUserID(fro), dataTypes.sInt32]])