def sellInventoryItem(command): # GET THE NAME FROM COMMAND ID target = None for player in PLAYERS: if (player["id"] == command["id"]): target = player if not target: return player_db = database.getPlayerData(target["name"]) # The incoming index doesn't account for the root, so we need to account for that fish = player_db["inventory"][command["index"]] if fish == "SERGIO": player_db["money"] = player_db["money"] + 10 else: player_db["money"] = player_db["money"] + 1 del player_db["inventory"][command["index"]] # Update the database database.setPlayerData(command["name"], player_db) # REFRESH THE INVENTORY/MONEY INFO FOR THE PLAYER ONCE UPDATED sendMessageTo({ "command": "inventory", "inventory": player_db["inventory"] }, command["id"]) sendMessageTo({ "command": "money", "money": player_db["money"] }, command["id"])
def _getRosterPlayers(rosters): # flatten player list simpleRosters = [roster["players"] for roster in rosters] allIds = [player for roster in simpleRosters for player in roster] # get players from DB db = getDB() return getPlayerData(db, allIds)
def createPlayer(name, session_id, websocket): # Make sure the player exists in the database database.getPlayerData(name) wardrobe = database.getPlayerWardrobeData(name) # Notify the client of existing clients messages = [] for player in PLAYERS: messages.append({ "command": "create", "id": player["id"], "name": player["name"], "x": player["x"], "y": player["y"], "state": player["state"], "hair": player["hair"] }) # Add the player to our list of players PLAYERS.append({ "id": session_id, "name": name, "x": 480, "y": 480, "socket": websocket, "messages": messages, "state": "default", "hair": wardrobe["hair"]["current"] }) # Notify all clients of the new player sendMessage({ "command": "create", # TODO: THIS ID SHOULD REALLY NOT BE BROADCASTED TO ALL PLAYERS "id": session_id, "name": name, "x": 480, "y": 480, "state": "default", "hair": wardrobe["hair"]["current"], "debug": database.getPlayerData("default")["name"] })
def sendMoneyInfo(command): # GET THE NAME FROM COMMAND ID target = None for player in PLAYERS: if (player["id"] == command["id"]): target = player if not target: return player_db = database.getPlayerData(target["name"]) sendMessageTo({ "command": "money", "money": player_db["money"] }, command["id"])
def buy(command): item = command["item"] # Handle the hairs if item == 0 or item == 1: wardrobe = database.getPlayerWardrobeData(command["name"]) if item not in wardrobe["hair"]["unlocked"]: # Also need to check that the player has enough money player = database.getPlayerData(command["name"]) if item == 0 and player["money"] >= 50: player["money"] = player["money"] - 50 wardrobe["hair"]["unlocked"] += [0] database.setPlayerWardrobeData(command["name"], wardrobe) database.setPlayerData(command["name"], player) players.sendMoneyInfo(command) # Also send the wardrobe info so we can update it on client side players.sendWardrobeInfo({"name": command["name"], "id": command["id"]}) elif item == 1 and player["money"] >= 100: player["money"] = player["money"] - 100 wardrobe["hair"]["unlocked"] += [1] database.setPlayerWardrobeData(command["name"], wardrobe) database.setPlayerData(command["name"], player) players.sendMoneyInfo(command) # Also send the wardrobe info so we can update it on client side players.sendWardrobeInfo({"name": command["name"], "id": command["id"]})
def getTrades(currentWeek=None, teams=None, n=5): """Gets recent transactions""" leagueID = os.getenv("LEAGUE_ID") currentWeek = currentWeek or getTimeframe()["week"] teams = teams or getTeams(True) db = getDB() # recursively search until I find 5 trades tradesData = [] def findTrades(week): txns = requests.get( f"https://api.sleeper.app/v1/league/{leagueID}/transactions/{week}" ).json() # filter for only trades of two teams tradesData.extend([ trade for trade in txns if trade["type"] == "trade" and len(trade["roster_ids"]) == 2 ]) if len(tradesData) < n: findTrades(week - 1) findTrades(currentWeek) tradesData = tradesData[:n] # get player info id_list_list = [trade["adds"].keys() for trade in tradesData] id_list = set([item for sublist in id_list_list for item in sublist]) allPlayers = getPlayerData(db, id_list) trades = [] def getTradeData(roster_id): players = [ key for key in tradeData["adds"].keys() if tradeData["adds"][key] == roster_id ] picks = [ pick for pick in tradeData["draft_picks"] if pick["owner_id"] == roster_id ] draftConvert = {1: "1st", 2: "2nd", 3: "3rd"} voteData = db.trade_votes.find({ "transaction_id": tradeData["transaction_id"], "roster_id": roster_id, }) voteUsers = [vote["user_id"] for vote in voteData] return { "team": [ team for team in teams if team["id"].split("|")[1] == str(roster_id) ][0], "players": [allPlayers[player_id] for player_id in players], "picks": [{ "season": pick["season"], "round": draftConvert[pick["round"]], "owner": [ team for team in teams if team["id"].split("|")[1] == str(pick["roster_id"]) ][0]["owner"], } for pick in picks], "votes": voteUsers, } for tradeData in tradesData: trade = { "transaction_id": tradeData["transaction_id"], "team1": getTradeData(tradeData["roster_ids"][0]), "team2": getTradeData(tradeData["roster_ids"][1]), } trades.append(trade) return trades
def sendInventoryInfo(command): player_db = database.getPlayerData(command["name"]) sendMessageTo({ "command": "inventory", "inventory": player_db["inventory"] }, command["id"])